作者在 2008-11-21 19:20:10 发布以下内容
类型兼容性规则是指在需要基类对象的任何地方,都可以使用公有派生的对象来替代。
其中所指的替代包括一下几种:
1>派生类的对象可以赋值给基类对象;
2>派生类的对象可以初始化基类的引用;
3>派生类的对象的地址可以赋给指向基类的指针;
注意:在替代之后,派生类对象可以作为基类的对象使用,但只能使用从基类继承的成员
class B
{...};
class D:public B
{...};
main()
{B b1,*p1;
D d1;
b1=d1; //第一类;
B&b=d1; //第二类
P1=&d1; //第三类
}
for example:
#include<iostream>
using namespace std;
class B0
{public:
void display(){cout<<"B0::display()"<<endl;}
};
class B1:public B0
{public:
void display(){cout<<"B1::display()"<<endl;}
};
class D1:public B1
{public:
void display(){cout<<"D1::display()"<<endl;}
};
void fun(B0 *ptr)
{ptr->display();}
int main()
{B0 b0,*p;
B1 b1;
D1 d1;
p=&b0;
fun(p);
p=&b1;
fun(p);
p=&d1;
fun(p);
}
其结果为: