美文网首页
关于构造函数创建顺序的问题

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

作者: 当时光一去不复返时 | 来源:发表于2016-11-12 16:22 被阅读0次
#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处没有任何表现形式,但是丝毫不影响按上述顺序依次调用该函数长辈的构造函数!!!
当然析构函数的调用就不用说了,直接全体向后转,齐步走来依次结束

相关文章

网友评论

      本文标题:关于构造函数创建顺序的问题

      本文链接:https://www.haomeiwen.com/subject/pjeqpttx.html