很清楚编译器会隐式创建一个构造函数,但是如果我们有这样的代码:
class A
{
public:
A(int = 0) {}
};
Run Code Online (Sandbox Code Playgroud)
此构造函数是默认值和转换运算符.
题:
编译器还会生成"空"默认构造函数A() {}吗?
Luc*_*ore 10
不可以.默认构造函数是没有带默认值的参数或参数的构造函数.
所以,基本上,您已经定义了默认构造函数.
12.1.5来自C++03各州的部分:
类X的默认构造函数是类X的构造函数,可以在没有参数的情况下调用.[...]
由于您可以在没有参数的情况下调用构造函数,因此它是默认构造函数.因此,编译器不需要声明另一个.