1116C++虚基类详解.docVIP

  • 24
  • 0
  • 约 5页
  • 2016-11-07 发布于重庆
  • 举报
1116C虚基类详解

我们知道,如果一个派生类有多个直接基类,而这些直接基类又有一个共同的基类,则在最终的派生类中会保留该间接共同基类数据成员的多份同名成员。在引用这些同名的成员时,必须在派生类对象名后增加直接基类名,以避免产生二义性,使其惟一地标识一个成员,如: 图 11.21 现在,将类A声明为虚基类,方法如下: class?A?//声明基类A { // 代码 }; class?B:?virtual?public?A?//声明类B是类A的公用派生类,A是B的虚基类 { // 代码 }; class?C:?virtual?public?A?//声明类C是类A的公用派生类,A是C的虚基类 { // 代码 }; 注意: 虚基类并不是在声明基类时声明的,而是在声明派生类时,指定继承方式时声明的。因为一个基类可以在生成一个派生类时作为虚基类,而在生成另一个派生类时不作为虚基类。 声明虚基类的一般形式为: ? ?class 派生类名: virtual 继承方式 ?基类名 即在声明派生类时,将关键字 virtual 加到相应的继承方式前面,经过这样的声明后,当基类通过多条派生路径被一个派生类继承时,该派生类只继承该基类一次,也就是说,基类成员只保留一次。 需要注意:为了保证虚基类在派生类中只继承一次,应当在该基类的所有直接派生类中声明为虚基类。否则仍然会出现对基类的多次继承。 如果在派生类B和C中将类A

文档评论(0)

1亿VIP精品文档

相关文档