zoukankan      html  css  js  c++  java
  • 派生类构造函数的执行顺序

    派生类构造函数的执行顺序

     

    下面给出一个例子

    代码:

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 
     6 //打印函数名辅助宏
     7 #define PRINT_FUNC_NAME()
     8     cout << __FUNCTION__ << endl;
     9 
    10 
    11 //构造及析构函数声明与实现辅助宏
    12 #define DE_AND_CONSTRUCTOR( className )
    13 public:
    14     className(int a)
    15     :m_a(a)
    16     {
    17         PRINT_FUNC_NAME()
    18     }
    19     virtual ~className()
    20     {
    21         PRINT_FUNC_NAME()
    22     }
    23 private:
    24     int m_a;
    25 
    26 
    27 class Base1
    28 {
    29     DE_AND_CONSTRUCTOR(Base1)
    30 };
    31 
    32 class Base2
    33 {
    34     DE_AND_CONSTRUCTOR(Base2)
    35 };
    36 
    37 class Base3
    38 {
    39     DE_AND_CONSTRUCTOR(Base3)
    40 };
    41 
    42 class Member1
    43 {
    44     DE_AND_CONSTRUCTOR(Member1)
    45 };
    46 
    47 class Member2
    48 {
    49     DE_AND_CONSTRUCTOR(Member2)
    50 };
    51 
    52 
    53 
    54 class Derived: public Base1, public Base2, public Base3
    55 {
    56 public:
    57     Derived()//注意此处的顺序与执行的顺序无关
    58         :Base3(0), m_Member1(0), Base1(0), Base2(0),m_Member2(0)
    59     {
    60         PRINT_FUNC_NAME()
    61     }
    62     virtual ~Derived()
    63     {
    64         PRINT_FUNC_NAME()
    65     }
    66 
    67 private:
    68     Member1 m_Member1;
    69     Member2 m_Member2;
    70 };
    71 
    72 
    73 
    74 int main()
    75 {
    76     Derived mDerived;
    77 
    78     return 0;
    79 }

    运行结果:

     

    参考:C++语言程序设计(4) 清华大学 郑莉 【第七章 7.4 派生类的构造和析构函数】

    作者:shanql 转载请标明出处,谢谢。
  • 相关阅读:
    delphi res 字符串资源
    delphi label1 文字在窗体上水平来回移动
    delphi Edit
    delphi CoolBar这个怎么弄没了
    delphi Components[i]清除所有edit控件中的内容
    delphi Caption 垂直显示标签文本
    delphi array应用 DayOfWeek星期几判断
    delphi 2010 资源文件使用
    delphi 18 屏蔽和替换 右键菜单
    delphi 16 网页缩放
  • 原文地址:https://www.cnblogs.com/shanql/p/5429066.html
Copyright © 2011-2022 走看看