C++—协变和抗变

协变、抗变英文分别是   Covariance 、Contravariance   ,形容词为 '-ce '==>   '-t ' 

这是数学和物理学术语,在OO领域中也有应用。 
“共变”、“逆变”是一种译法,另外一种译法是“协变”、“抗变”。特别在OO领域,基本上都是用后面这组。此外还有“不变(Nonvariance)”。 

在OO中,协变是指按照继承链正向改变,抗变是指逆向改变。示例如下: 

class   Base 

public: 
        virtual   RB   func(PB); 


class   Derived   :   public   Base 

public: 
        virtual   RD   func(PD); 


此处Base::func   和   Derived::func   表示同一个虚函数。XB是Base中的返回值和形参;XD表示字(应该是子,转注)类中的。则协变表示XD继承XB(与Derived   --   Base的关系相协);抗变表示XB继承XD(与Derived   --   Base的关系相抗),不变当然是XD与XB相同.
目前,一般认为,返回值可以协变;参数则不可以(也有认为参数可以抗变)。 
因此,在C++标准的虚函数中,返回值协变,参数不变。即RD可以是RB的派生类,PD则一定与PB相同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值