使用C++基类的对象不能完成多态的特性,比如:
class base
{
//...
};
class subclass
{
//...
};
使用一个基类的实体来完成多态会出现问题,如:
base test;
subclass testsub;
test = testsub;
test.fun();
这样的话testsub转换成test丢失了部分数据,因此调用fun()时其实是调用base:fun();
通过base class的指针或者是引用才可以实现多态的特性。
base * testagain = testsub;
testagain->fun(); //OK