虚基类和多重继承总结
2012-11-09 16:14
176 查看
1,虚基类,其构造函数总是在最后一个层次最先并且真正被执行。
实例代码:
输出:
引用
B from G
C from G
A from E
E from G
D from F
F from G
G from main
总结:虚基类构造函数最先被执行,然后按照从左到右,从上到下的顺序依次执行每一个构造函数。
实例代码:
#include <iostream> using namespace std; class A { public: A(const string& s) { cout << "A " << s << endl; } virtual ~A() {} }; class B { public: B(const string& s) { cout << "B " << s << endl; } virtual ~B() {} }; class C { public: C(const string& s) { cout << "C " << s << endl; } virtual ~C() {} }; class D { public: D(const string& s) { cout << "D " << s << endl; } virtual ~D() {} }; class E : public A, virtual public B, virtual public C { public: E(const string& s) : A("from E"), B("from E"), C("from E") { cout << "E " << s << endl; } }; class F : virtual public B, virtual public C, public D { public: F(const string& s) : B("from F"), C("from F"), D("from F") { cout << "F " << s << endl; } }; class G : public E, public F { public: G(const string& s) : B("from G"), C("from G"), E("from G"), F("from G") { cout << "G " << s << endl; } }; int main() { //虚基类的构造函数最先执行 G g("from main"); }
输出:
引用
B from G
C from G
A from E
E from G
D from F
F from G
G from main
总结:虚基类构造函数最先被执行,然后按照从左到右,从上到下的顺序依次执行每一个构造函数。
相关文章推荐
- 避免多重继承引起的冲突——虚基类
- 虚基类与多重继承
- C++类的继承和虚基类总结
- 多重继承问题总结
- 多重继承和虚基类
- 多重继承 与 虚基类
- 多重继承总结
- C++专题总结之理解虚拟函数、多继承、虚基类和RTTI
- C++学习之路—继承与派生(三):多重继承与虚基类
- 从零开始学C++之继承(三):多重继承、虚继承与虚基类
- 虚函数总结(二) 多重继承的虚函数表
- Maven学习总结(五)——聚合与继承
- 关于多重继承的陷阱
- Java【多线程知识总结(5)】比较继承Thread类创建线程和实现Runnable接口创建线程这两种方式
- 关于C++中的虚拟继承的一些总结
- 关于子进程继承父进程属性的小问题总结
- 定义Person(人)类,由Person分别派生出Teacher(教师)类和Cadre(干部)类,再由Teacher(教师)类和Cadre(干部)类采用多重继承方式派生出新类TeacherCadre(
- OC第三天 继承总结
- [转载]js中继承的几种用法总结(apply,call,prototype)
- java总结(之五)-- 类与接口、多态与继承