1 基类和派生类之间的特殊关系
假设有基类BaseClassA,它有方法MethodA()和私有方法MethodB();另有派生类InheritClassA继承于BaseClassA,它具有方法MethodC();
(1)派生类对象可以调用基类的方法。前提是该方法不能是私有的方法。
<pre name="code" class="cpp">InheritClassA class1;
class1.MethodA(); // 调用基类的公有方法
但是,私有方法不能被调用:
class1.MethodB() // 是不正确的
(2)基类指针可以在不进行显示转换的情况下指向派生类对象;基类引用可以在不进行显式转换的情况下引用派生类对象。
InheritClassA class1;
<pre name="code" class="cpp">BaseClassA & classRef = class1 ;
<pre name="code" class="cpp">BaseClassA * classPtr = &class1 ;
但是,基类指针或引用只能调用基类的方法。
classRef.MethodA();
classPtr->MethodA();
而不能
classRef.MethodC();
classPtr->MethodC();
还有,不能将基类对象和地址赋值给派生类引用和指针。