我想编译器提供的构造函数是什么?该构造函数是否进行内存分配以及创建对象所需的所有内容.
我不是从成员变量初始化的角度来问这个问题.我想知道编译器执行的默认构造函数代码中发生了什么,并提供默认构造函数
默认构造函数是没有参数的构造函数,或者如果它具有参数,则所有参数都具有默认值.
如果A类不存在用户定义的构造函数且需要一个,则编译器隐式声明默认的无参数构造函数A :: A().此构造函数是其类的内联公共成员.当编译器使用此构造函数创建类型A的对象时,编译器将隐式定义A :: A().构造函数将没有构造函数初始值设定项和空体.
在定义A的隐式声明的构造函数之前,编译器首先隐式定义类A的基类和非静态数据成员的隐式声明的构造函数.不为具有任何常量或引用类型成员的类创建默认构造函数.
如果满足以下所有条件,则A类的构造函数是微不足道的:
* It is implicitly defined
* A has no virtual functions and no virtual base classes
* All the direct base classes of A have trivial constructors
* The classes of all the nonstatic data members of A have trivial constructors
Run Code Online (Sandbox Code Playgroud)
如果以上任何一个都是假的,那么构造函数是不重要的.
union成员不能是具有重要构造函数的类类型.
与所有函数一样,构造函数可以具有默认参数.它们用于初始化成员对象.如果提供了默认值,则可以在构造函数的表达式列表中省略尾随参数.请注意,如果构造函数具有任何不具有默认值的参数,则它不是默认构造函数.
读
| 归档时间: |
|
| 查看次数: |
1976 次 |
| 最近记录: |