-5
在代码中,我能够成功地将派生类指针指向基类对象,并且还能够设置和获取基类私有成员的值。如果这没有给出任何问题,那么虚拟函数的需求和运行时多态/后期绑定/ vtable bla bla bal !!!的整个混淆是什么?虚拟功能的整体概念是什么?
#include <iostream>
using namespace std;
class Base
{
int a;
public:
Base(int x=0):a(x){}
void setValueForMember(int p)
{
a=p;
}
void showValueOfMember(){cout<<endl<<a<<endl;}
};
class Derived:public Base
{
int b;
public:
Derived(){}
Derived(int y):b(y){}
void setValueForMember(int q)
{
b=q;
}
void showValueOfMember(){cout<<endl<<b<<endl;}
};
int main()
{
Derived D;
D.setValueForMember(10);
Derived *Dptr = new Derived();
Dptr = &D;
Dptr->showValueOfMember();
Base B;
Dptr = (Derived*)&B;
Dptr->setValueForMember(20);
Dptr->showValueOfMember();
return 0;
}
https://en.wikipedia.org/wiki/Virtual_function – JimmyB
[Virtual functions](http://stackoverflow.com/questions/6520394/virtual-functions) – JimmyB
Derived * Dptr = new Derived( ); Dptr =&D;' - >内存泄漏。 – JimmyB