類(lèi)型兼容性規則是指在需要基類(lèi)對象的任何地方,都可以使用公有派生的對象來(lái)替代。
其中所指的替代包括一下幾種:
1>派生類(lèi)的對象可以賦值給基類(lèi)對象;
2>派生類(lèi)的對象可以初始化基類(lèi)的引用;
3>派生類(lèi)的對象的地址可以賦給指向基類(lèi)的指針;
注意:在替代之后,派生類(lèi)對象可以作為基類(lèi)的對象使用,但只能使用從基類(lèi)繼承的成員
class B
{...};
class D:public B
{...};
main()
{B b1,*p1;
D d1;
b1=d1; //第一類(lèi);
B&b=d1; //第二類(lèi)
P1=&d1; //第三類(lèi)
}
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);
}
其結果為:

聯(lián)系客服