C++类型兼容原则
类型兼容原则是指在需要基类对象的任何地方,都可以使用共有派生类的对象来替代。
类型兼容规则中所指的替代包括以下的情况:
(1) 派生类的对象可以赋值给基类对象
(2) 派生类的对象可以初始化基类的引用。
(3) 派生类对象的地址可以赋值给基类的指针。
For example:
class B
{….};
Class D: public B
{…..};
int main()
{
B b1, *pbl;
D d1;
b1 = d1;//派生类的对象可以赋值给基类对象。
B &bb = d1;//派生类的对象可以初始化基类的引用。
pb1 = &d1; //派生类对象的地址可以赋值给基类的指针。
return0;
}
注意:在替代之后,派生类对象就可以作为基类的对象使用,但只能使用从基类继承的成员。
例子:
#include<iostream>
using namespacestd;
class BO//基类B0定义
{
public:
voiddisplay(){cout<<"Bo::display()"<<endl;}//公有成员函数
};
class B1:public BO
{
public:
voiddisplay(){cout<<"B1::display()"<<endl;}
}
class D1:public B1
{
public:
voiddisplay(){cout<<"D1::display()"<<endl;}
};
void fun(BO *ptr)//参数为指向基类对象的指针
{
ptr->display();//“对象指针->成员名”
}
int main()
{
BO bo;//声明B0类的对象
B1 b1;//声明B1类的对象
D1 d1;//声明D1类的对象
BO *p;
p = &bo;//B0类指针指向B0类对象
fun(p);
p=&b1;;//B0类指针指向B1类对象
fun(p);
p=&d1;;//B0类指针指向D1类对象
fun(p);
return 0;
}