赋值兼容规则

   注意:派生类是基类对象,反之不成立

在一定条件下,不同类型的数据之间可以进行类型转换,如可以将整型数据赋给双精度型变量。在赋值之前,先把整型数据转换成双精度型数据,然后再把它赋给双精度型变量。这种不同类型数据之间的自动转换和赋值,称为赋值兼容。在基类和派生类对象之间也存有赋值兼容关系,基类和派生类对象之间的赋值兼容规则是指在需要基类对象的任何地方,都可以使用其子类对象来代替。

例如,下面声明两个类:

class Base //声明基类Base  
{  
    ...  
};  
class Derived:public Base//声明基类Base的公有派生类Derived  
{  
    ...  
};  

 

根据赋值兼容规则,在基类base的对象可以使用的任何地方,都可以用派生类Derived的对象来替代,但只能使用从基类继承来的成员。具体表现在下面几个方面:

1.派生类对象可以赋值给基类对象,即用派生类对象中从基类继承来的数据成员,逐个赋值给基类对象的数据成员。例如

Base b;        //定义基类Base的对象b  
Derived d;     //定义基类Base的公有派生类Derived的对象d  
b=d;           //用派生类Derived的对象d对基类对象b赋值  
这种赋值的效果是对象b中所有数据成员都将具有对象d中对应的数据成员的值。
2.派生类对象可以初始化基类对象的引用
Base b;        //定义基类Base的对象b  
Derived d;     //定义基类Base的公有派生类Derived的对象d  
Base &br=d;    //定义基类Base的对象的引用br,并用派生类Derived的对象d对其初始化 

3.派生类对象的地址可以赋值给指向基类对象的指针。例如
Derived d;     //定义基类Base的公有派生类Derived的对象d  
Base *bp=&d;  //把派生类对象的地址&d赋给指向基类的指针bp,也就是说  
              //使指向基类对象的指针bp也可以指向派生类对象d  

附加:.如果函数的形参是基类对象或基类对象的引用,在调用函数时可以用派生类对象作为实参。
 
 
 
 

转载于:https://www.cnblogs.com/enumhack/p/7474111.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值