c++类型兼容原则

来源:互联网 发布:入骨相思知不知 番外 编辑:程序博客网 时间:2024/06/05 18:58

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;

}