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

类型兼容性规则: 在需要基类对象的任何地方,都可以用公有派生类的对象来替代
其替代主要包括一下情况
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()   
类型兼容性事多态性的重要基础之一,

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

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值