zoukankan      html  css  js  c++  java
  • 编译器生成“合成默认构造函数'的情况总结

    在以下五种情况下,编译器会生成"合成默认构造函数":

    1.本身没有任何构造函数,但是含有类成员,且该类成员含有默认构造函数。

    2.子类继承父类,且父类含有默认构造函数,但是子类没有任何构造函数。

    3.含有虚函数,且自身没有任何构造函数。

    4.含有虚基类,且自身没有任何构造函数。

    5.定义成员变量的时候赋初值,且自身没有任何构造函数。

    (注:对于含有虚函数和虚基类的类,即使自己定义了构造函数,编译器同样会在开头安插保存虚函数表或者虚基类表的代码)。

    下面举例:

    -------------------------------------------------------------------------------------------------------------------

    1:本身没有任何构造函数,但是含有类成员,且该类成员含有默认构造函数。

    class A
    {

    public:

    A(){}

    };

    class B

    {

    public:

    private:
     A a;

    };

    ------------------------------------------------------------------------------------------------------------

    2.子类继承父类,且父类含有默认构造函数,但是子类没有任何构造函数。

    class A
    {

    public:

    A(){}

    };

    class B:public A{

    public:

    };

    ----------------------------------------------------------------------------------------------------------------

    3.含有虚函数,且自身没有任何构造函数。

    class A

    {

    public:

    virtual void foo();

    };

    -----------------------------------------------------------------------------------------------------------------

    4.含有虚基类,且自身没有任何构造函数。

    class A

    {

    public:

    };

    class B:virtual public A

    {

    public:

    };

    class C:virtual public A

    {

    public:

    };

    class D:public A,public B

    {

    public:

    };

    ------------------------------------------------------------------------------------------------------------------------

    对于情况5,是C++11引入的,比如:

    class A{

    private:

    int x{0};
    };

    ----------------------------------------------------------------------------------------------------------------------------

  • 相关阅读:
    git的使用
    open():打开文件
    结合python+selenium使用AutoIt V3实现文件、图片上传
    Postman教程
    Python字符串切片
    python实现操作excel,数据写入excel的一行或者一列
    python打包exe
    spring boot基于DRUID数据源密码加密及数据源监控实现
    基于aop的日志记录方式实现
    Android中ContentProvider的简单使用
  • 原文地址:https://www.cnblogs.com/SunShine-gzw/p/13571891.html
Copyright © 2011-2022 走看看