指向继承类的基类指针解引用后,是否还具备多态性
class Base
{
{
public:
int a;
virtual void fun() { cout << "Base" << endl; }
};
int a;
virtual void fun() { cout << "Base" << endl; }
};
class Extend : public Base
{
public:
{
public:
int b;
virtual void fun() { cout << "Extend" << endl; }
};
virtual void fun() { cout << "Extend" << endl; }
};
int main()
{
Base *pb;
Extend ex;
pb = &ex;
pb->fun();
(*pb).fun();
cout<
}
测试结果:具备多态性。
如果将这个指针指向的对象赋给基类对象,基类对象并不会变成多态语意,看来C++挺神奇的:
Base b=(*pb);
b.fun(); //invoke Base::fun()