什么时候编译器会合成派生类的构造函数

1.派生类继承的基类中缺省的构造函数时

站在用户的角度思考问题,与客户深入沟通,找到栾川网站设计与栾川网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、成都网站建设、外贸网站建设、企业官网、英文网站、手机端网站、网站推广、域名注册、虚拟空间、企业邮箱。业务覆盖栾川地区。

源代码:

#include

using namespace std;

class Base

{

public:

    Base()

    { }

    void  FunTest()

    {  }

    int m_a;

};

class Der : public Base

{

public:

    void  FunTest1()

    { }

};

void Test()

{

    cout << "********" << endl;

    Der  d;

}

int main()

{

    Test();

    getchar();

    return 0;

}

看看汇编

什么时候编译器会合成派生类的构造函数

如果去掉基类中

Base()

{  }

在看看汇编

什么时候编译器会合成派生类的构造函数

2.派生类虚拟继承基类时

代码:

#include

using namespace std;

class Base

{

public:

    void  FunTest()

    {  }

    int m_a;

};

class Der : virtual public Base

{

public:

    void  FunTest1()

    { }

};

void Test()

{

    cout << "********" << endl;

    Der  d;

}

int main()

{

    Test();

    getchar();

    return 0;

}

看看汇编

什么时候编译器会合成派生类的构造函数

如果去掉继承列表中的virtual

在看看汇编

什么时候编译器会合成派生类的构造函数

3.派生类中有其他类类型的成员(该类有缺省的构造函数)时

代码:

#include

using namespace std;

class Base

{

public:

    void  FunTest()

    {  }

    int m_a;

};

class T

{

public:

    T()

    {  }

    void  FunTest()

    {  }

    int m_a;

};

class Der :public Base

{

public:

    void  FunTest1()

    { }

    T test;

};

void Test()

{

    cout << "********" << endl;

    Der  d;

}

int main()

{

    Test();

    getchar();

    return 0;

}

看看汇编

什么时候编译器会合成派生类的构造函数

如果去掉T类中

T()

{  }

在看看汇编

什么时候编译器会合成派生类的构造函数

4.派生类或基类中有虚函数的出现时

代码:

#include

using namespace std;

class Base

{

public:

    virtual void  FunTest()

    {  }

    int m_a;

};

class Der :public Base

{

public:

    void  FunTest1()

    { }

};

void Test()

{

    cout << "********" << endl;

    Der  d;

}

int main()

{

    Test();

    getchar();

    return 0;

}

看看汇编

什么时候编译器会合成派生类的构造函数

如果去掉Base类函数FunTest()前的virtual

在看看汇编

什么时候编译器会合成派生类的构造函数


名称栏目:什么时候编译器会合成派生类的构造函数
转载来源:http://pwwzsj.com/article/ijooss.html