1 / 3
文档名称:

5.5 赋值兼容规则.doc

格式:doc   页数:3
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

5.5 赋值兼容规则.doc

上传人:中国课件站 2011/10/11 文件大小:0 KB

下载得到文件列表

5.5 赋值兼容规则.doc

文档介绍

文档介绍:赋值兼容规则
赋值兼容规则是指在公有派生情况下,一个派生类的对象可用于基类的对象可以使用的地方。
例如:如果类derived从base类公有派生,则赋值兼容规则指的是下面三种情况。
(1)派生类的对象可以赋给基类的对象。
derived d;
base b;
b=d; //对象d中所含的b类成员被赋给b
(2)派生类的对象可以初始化基类的引用。
derived d;
base& br=d;
(3)派生类的对象的地址可以赋给指向基类的指针。
derived d;
base *pb=&d;
注意:通过pb或br只能访问对象d中所继承的基类的成员。
下面以指针为例,分析一下单一继承和多重继承中使用该规则的意义和应注意的问题。
单一继承的情况
继承为代码重用提供了一种简便的方法,无需修改基类的源代码,可以通过从基类派生派生一个新类来裁剪基类,以满足具体的应用要求,达到代码重用的目的。赋值兼容性规则拓展了代码重用的广度。


多重继承可以视为多个单一继承的组合,因此,赋值兼容规则也适用于多重继承的情况。
设某多重继承的有向无环图(DAG)表示为图5—1:
并且C类是从A类和B类公有派生,则C类的对象可以用于A类或B类的对象可以使用的地方,例如:
C c;
A *pa=&c;
B *pb=&c;
并且可以使用强制类型转换将pa或pb置给指向C类对象的指针。如:
C *pc=(c *)pa;
但是,在派生类的基类又有共同的基类时,将指向派生类的指针强制为指向该共同基类的指针时会产生二义性。例如,对于图5
—2的DAG:

分析下面的程序:
derived d;
derived *dptr=&d;
base *b;
b=dptr; //error
b=(base *)dptr; //error
当试图将一个指向derived类的指针强制转换成指向base类的指针时,编译器不知道是通过base1还是base2继承路径。为避免这种二义性,使用下面的语句:
b=(base *)(base1 *)dptr;//显示指明全路径
b=(base1 *)dptr; //强制到base1 *,然后从base1 *到base *进行隐式类型转换
上面的情况同样适用于函数调用中参数传递和返回值的情况。
多重继承比单一继承情况复杂的原因在于,派生类在这两种情况下在内存中的数据成员布局不一样。先分析单一继承情况下数据成员在内存中的布局。设有
class base
{
int b;
};
class derived:public base
{
float d;
}
则派生类derived的一个对象在内存中的布局如图5—3所示。
分析下面的程序:
derived d;
base *bptr=&d;//bptr指向图5—3中箭头A所指向的位置
derived *dptr=&d;//dptr指向图5—3中箭头A所指向的位置
如果派生类derived由下面的类等级建立:
class base
{
int b;
};
class base1:pub

最近更新

2023年九州职业技术学院单招职业技能考试题库.. 40页

2023年九江职业大学单招职业技能考试模拟测试.. 40页

2023年云南三鑫职业技术学院单招职业技能测试.. 39页

2023年云南商务职业学院单招职业适应性考试题.. 40页

2026年全国大学生返家乡寒假社会实践活动记录.. 51页

2023年云南外事外语职业学院单招职业技能考试.. 39页

2023年云南新兴职业学院单招综合素质考试题库.. 40页

2023年云南旅游职业学院单招职业技能考试题库.. 41页

2023年云南理工职业学院单招综合素质考试题库.. 41页

2023年云南省丽江地区单招职业倾向性考试模拟.. 41页

2026年全国乙卷文科数学试卷真题及答案 5页

2023年云南经贸外事职业学院单招职业技能测试.. 39页

2023年云南轻纺职业学院单招职业技能考试题库.. 40页

2026年入职新员工培训内容方案 31页

2023年仰恩大学单招职业倾向性测试题库完美版.. 40页

2023年伊春职业学院单招职业技能考试题库最新.. 40页

2023年保定幼儿师范高等专科学校单招职业适应.. 40页

2023年信阳职业技术学院单招职业适应性测试题.. 40页

2023年信阳艺术职业学院单招职业技能测试模拟.. 40页

2023年六安职业技术学院单招职业技能考试模拟.. 40页

2023年六盘水职业技术学院单招职业倾向性考试.. 40页

2025年广州卫生职业技术学院单招职业技能测试.. 64页

美团代运营业务委托合同 6页

九年级家长会课件PPT下载(初三2班) 25页

山东科技版小学英语五年级下册词汇表带音标 4页

年产3000万片硝苯地平缓释片车间设计 40页

DB61∕T 926-2014 火灾高危单位消防安全管理与.. 45页

AQ 7011-2018《高温熔融金属吊运安全规程》 11页

保洁外包单位月度考评表 3页

基于 ABAQUS 的切削残余应力仿真说明书 43页