和 成员变量 的情况一样,如果类中有基类,那么调用 基类构造 函数的顺序和和声明的顺序一致。

代码如下:

class A1
{
public:
    A1(){cout<<"A1 construction"<<endl;}
};

class A2
{
public:
    A2(){cout<<"A2 construction"<<endl;}
};

class A3: public A1, public A2//注意,这里为声明的顺序
{
public:
    A3(){ 
        A2::A2();
        A1::A1();
        cout<<"A3 construction"<<endl;
    }
};

int main(int argc, char* argv[])  
{  
     A3 a;
     return 0
}

这里为了验证是否显示的调用了构造函数,编译器就不自动调用基类的构造函数了。

结果是,就算你显示的调用了基类的构造函数,编译器还是会调用的。

结果如下:

A1 construction
A2 construction    // 前两行为编译器调用的,后两行为显示调用的 基类的构造函数
A2 construction
A1 construction
A3 construction

 

 

 

 

 

相关文章:

  • 2021-08-05
  • 2021-06-14
  • 2021-09-04
  • 2021-09-30
  • 2021-09-02
  • 2021-08-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-02-28
  • 2021-10-31
  • 2021-12-09
  • 2021-10-17
  • 2021-08-11
  • 2022-12-23
  • 2022-01-13
相关资源
相似解决方案