2010-09-01C++学习笔记 虚继承


2010-09-01C++学习笔记 虚继承_第1张图片
 Pegasus尽力想明确使用哪个Animal基类.大多数时候,决定使用哪个是随意的,毕竟Horse和Bird有相同的基类.

可以告诉C++,不想使用共同基类的两个拷贝,而只想要一个共同的基类的拷贝,如上图.为此,可以让Animal成为Horse和Bird的虚基类.根本不用修改Animal,对于Horse和Bird类,只要在其声明中使用关键字virtual即可.

通常,类的构造函数只能初始化自己的变量及其基类,但虚继承的基类例外,它们由最后的派生类进行初始化.因此,Animal不是由Horse和Bird初始化,而是由Pegasus初始化.Horse和Bird必须在其构造函数中初始化Animal,但创建Pegausu对象时,这些初始化将被忽略.

你可能感兴趣的:(C++,c,C#)