Panda ying_yang("ying_yang");
Panda ling_ling = ying_yang;//这里将调用Bear的拷贝构造函数,而Bear执行拷贝之前又会调用ZooAnimal的拷贝构造函数//Bear部分构造完成后接着调用Endangered的拷贝构造函数,最后再执行Panda的拷贝构造函数
//假设ZooAnimal和Endangered都定义了max_weight成员,然后Panda没有定义它double d = ying_yang.max_weight();//那么这个调用会出错//派生过程继承两个max_weight是合法的,只要不调用就不会出现二义性问题//如果假设作用域运算符ZooAnimal::max_weight()或Endangered::max_weight()就可以避免
//class Panda : public Bear, public Raccoon, public EndangeredPanda::Panda(string name,bool onExhibit):ZooAnimal(name, onExhibit,"Panda"),Bear(name, onExhibit),Raccoon(name, onExhibit),Endangered(Endangered::critical),sleeping_flag(false){}//最后是Panda自己的部分//虚基类总是先于非虚基类构造的,和它们在继承体系中的次序位置无关
以动物园中动物的层次关系举例。定义一个抽象类ZooAnimal来保存动物园中动物共有的信息并提供公共接口,再定义一些辅助类,比如濒临灭绝的动物panda,由Bear和Endangered共同派生来:class Bear : public ZooAnimal {};class Panda : public Bear, public Endangered {};构造一个派生类的对象将同时构造并初始化它的所有基类子对象//显式初始化所有基类Panda::Panda(string name, b.