协变、抗变
来源:互联网 发布:元数据 编辑:程序博客网 时间:2024/04/27 22:33
协变、抗变英文分别是 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相同。
该段话来自csdn Vitin的跟贴,
贴子地址:
http://topic.csdn.net/u/20070625/22/7d4fe6aa-cf82-49d1-a47b-f46c84eaa458.html
Vitin 博客:
http://blog.csdn.net/Vitin
感谢Vitin
转注:必须为指针或是引用类型,如果是 类对象 则同样出错,,2011-11-29
- 协变、抗变
- 协变和抗变
- c#抗变 协变
- 协变和抗变
- c# 抗变 协变
- C#中的协变与抗变(逆变)
- C#中的协变与抗变
- C#协变和抗变
- C++—协变和抗变
- C#:协变和抗变
- C#的协变和抗变
- 逆变、协变
- 变
- 变
- 变
- 变
- 变
- 变...
- asp.net 打印ReportViewer报表 rdlc报表
- SQL对表进行权限设置
- 深入探讨SOAP、RPC和RMI
- 可输入下拉框的实现。
- 多站点同步解决方案
- 协变、抗变
- 有关预处理的问题
- 如何开发ORACLE存储过程
- 收集嵌入式论坛(ARM,DSP,FPGA,单片机)
- 事务网摘
- 未来五年程序员应当具备的十项技能
- win7管理员取得所有权
- SQL "SELECT INTO/BULKCOPY" 的用法
- 换行word-wrap与word-break兼容IE和FIREFOX