关于构造函数创建顺序的问题

#include<iostream> 
using namespace std; 
class B1
{ 
public: 
    B1(int i)
    {
         cout<<"constructing B1 "<<i<<endl; 
    } 
    B1()
    { 
        cout<<"destructing B1"<<endl; 
    } 
};  
class B2 
{ 
public:
    B2(int a)
    { 
        cout<<"constructing B2 *    "<<a<<endl; 
    } 
    B2( )
    { 
        cout<<"constructing B2 *"<<endl; 
    }
};  
class C:public B2, virtual public B1
{ 
    B2 j; 
public: 
    C(int a,int b,int c):B1(a),memberB1(b) ,j(c){} 
    C(){cout<<"sdghu"<<endl;}
private: 
    B1 memberB1; 
    B2 memberB2; 
};  
int main( )
{  
    C obj(1,2,3);   //1
    C abc;             //2
}

程序无论怎样运行,如果创建A的对象总会首先调用其长辈的构造函数,调用其长辈的构造函数时,按照参数最佳匹配、虚函数首先调用其他函数依次调用的顺序来调用,即使在1处和2处没有任何表现形式,但是丝毫不影响按上述顺序依次调用该函数长辈的构造函数!!!
当然析构函数的调用就不用说了,直接全体向后转,齐步走来依次结束

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容