设为首页 加入收藏

TOP

C++ 虚基类构造函数的执行顺序
2014-03-10 12:52:59 来源: 作者: 【 】 浏览:88
Tags:  构造 函数 执行 顺序

  (1)调用基类的构造函数,多个基类则按派生类声明时

  列出的次序、从左到右调用,而不是初始化列表中

  的次序。

  (2)调用对象成员(子对象)的构造函数,按类声明中

  对象成员出现的次序调用,而不是初始化列表中的

  次序。

  (3)执行派生类的构造函数。

  同一层中对虚基类构造函数的调用总是先于普通基类的构

  造函数。

  #include<IOSTREAM>

  using namespace std;

  class A//基类A

  {

  public:

  A(){cout《"class A"《ENDL;} pre }< 0;

  return d;

  D { main() int };

  D 《endl;} D(){cout《?class public:

  由C1和C2派生出类D C2 public C1, D:public C2 《endl;}

  C2(){cout《?class 由类B虚拟派生出类C2 B C2:virtual C1 《endl;}

  C1(){cout《?class 由类B虚拟派生出类C1 C1:virtual B 《endl;}

  B(){cout《?class 由A类派生出类B A B:>

  <P><BR>

  </P>

  <P></P><PRE class=brush:java;>#include<IOSTREAM>

  using namespace std;

  class M

  {

  public:

  M(const char *s){cout《"M:"《S《ENDL;} pre 0;

  return D { main() int };

  public: public B A < } main );

  g(?from G {cout《?G: 《s《endl;} G )

  G ),m(?in G ),F(?from G ),

  E(?from G ),C(?from s):B(?from char* G(const m;

  M F E, G:public {cout《?F: 《s《endl;} F )

  F ),m(?in F ),D(?from F ),C(?from F(const C, virtual B, F:virtual

  {cout《?E: 《s《endl;} E )

  E ),m(?in E ),C(?from E ),B(?from s):A(?from E(const C A, E:public D )

  {cout《?D: 《s《endl;} s):m(?in D(const C )

  {cout《?C: 《s《endl;} C(const B )

  {cout《?B: 《s《endl;} B(const A ){cout《?A: 《s《endl;}

  A(const><BR>

  <BR>

  <P></P>

  <BR>

  <P></P>                     </PRE>

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++归并排序实现(算法导论) 下一篇整型反序

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Libevent C++ 高并发 (2025-12-26 00:49:30)
·C++ dll 设计接口时 (2025-12-26 00:49:28)
·透彻理解 C 语言指针 (2025-12-26 00:22:52)
·C语言指针详解 (经典 (2025-12-26 00:22:49)
·C 指针 | 菜鸟教程 (2025-12-26 00:22:46)