C++ 类对象和类指针

https://www.jianshu.com/p/a75b267325c2

思考:指向继承类的基类指针解引用后,是否还具备多态性?


#include <iostream>
using namespace std;
 
class Base
{
	public:
		int a;
		virtual void fun() { cout << "Base" << endl; }
};
 
class Extend : public Base
{
	public:
		int b;
		virtual void fun() { cout << "Extend" << endl; }
};
 
int main()
{
	Base *pb;
	Extend ex;
	pb = &ex;
 
	pb -> fun(); //invoke Extend :: fun();
	(*pb).fun(); //invoke Extend :: fun();
 
	Base b = *pb;
	b.fun(); // invoke Base :: fun();
 
	cout << sizeof(Base) << " " << sizeof(*pb) << " " << sizeof(Extend) << endl;
	return 0;
}

测试结果显示仍然具备多态性。
但是,如果将这个指针指向的对象赋给基类对象,基类对象并不会变成多态语意。

原文地址:https://www.cnblogs.com/hunter-w/p/13849477.html