赞
踩
存在的原因:希望在多重继承时(即:派生类有多个直接基类,而这些直接基类是从同一个祖先基类派生而来),派生类只继承一个共同的祖先基类对象。
代码:
- #include <iostream>
- using namespace std;
- class Worker { //祖先基类
- private:
- string fullname; //对象成员
- long id;
- public:
- Worker() {}
- virtual ~Worker(){} //虚析构函数
- ...
- };
-
- class Waitress :virtual public Worker{ //要声明虚基类,只需要在派生时声明virtual即可
- private:
- int panache;
- public:
- Waitress():Worker(),panache(0){} //成员初始化列表
- ...
- };
- class Singer :virtual public Worker { //要声明虚基类,只需要在派生时声明virtual即可
- private:
- int voice;
- public:
- Singer():Worker(),voice(0){}
- ...
- };
- class SingerWaitress :public Waitress, public Singer { //不需要声明virtual
- public:
- SingerWaitress():Worker(0),Waitress(0),Singer(0){} //必须显式调用虚基类构造函数。
- ...
- };
分析:禁止信息通过中间类自动传递给虚基类。因此,在派生类中,必须通过显式地调用虚基类构造函数进行初始化。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。