1、基类指针可以在不进行显式转换的时候指向派生类的对象,引用也是。
例如:
Brass是BrassPlus的父类。
则如下代码是可以的:
BrassPlus bp;
Brass * b1 = &bp;
Brass & b2 = bp;
2、基类指针或引用不能调用派生类的方法。
如果基类指针可以调用派生类方法,则会出现类似如下情况:
BrassPlus中的成员变量age是Brass类没有的,如果调用setAge()方法,是没有意义的,因为在基类中不存在这个变量。
3、如果一个函数在基类中被声明为虚函数。在通过引用或者指针进行调用的时候将会确定使用哪一种方法。
例如:
//BrassPlus extend from Brass
Brass dom("nany", 12, true);
BrassPlus bot ("wink", 14, false);
Brass * br = &dom;
Brass & br_ref = bot;
br.setValue();//use Brass::setValue
br_ref.setValue;//use BrassPlus::setValue
4、基类的析构函数最好声明为虚函数