c++中关于类型兼容性规则的介绍

来源:互联网 发布:网易新闻app数据抓取 编辑:程序博客网 时间:2024/05/01 03:23

类型兼容性规则: 在需要基类对象的任何地方,都可以用公有派生类的对象来替代
其替代主要包括一下情况
1)派生类的对象可以赋值给基类的对象
2)派生类的对象可以初始化基类的引用
3)派生类对象的地址可以赋给指向基类的指针(这里常用)

下面将以实例一一介绍:

类的实现部分:

 class B

{……}

class D :public B

{……}

类的调用部分:

B b1,*pb1;

D d1;

1)派生类赋值给基类对象:b1=d1;

2)派生类对象初始化基类对象的引用:B& b=d1;

3)派生类对象的地址也可以赋给指向基类的指针:pb1=&d1;
在替代之后,派生类对象就可以作为基类的对象使用,但只能使用基类继承的成员

实例:

#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;
    B1 b1;
    D1 d1;
    B0 *p;
    p=&b0;
    fun(p);
    p=&b1;
    fun(p);
    p=&d1;
    fun(p);
    return 0;
}

运行结果:

B0::display()

B0::display()

B0::display()   
类型兼容性事多态性的重要基础之一,

这样通过“对象名.成员名”或者“对象名->成员名”的方式,就应该可以访问到个派生类中新添加的同名成员

原创粉丝点击