1 c++ constructor default-constructor
码:
struct A
{
~A(){ };
};
A::A(){ }; //error: definition of implicitly declared default constructor
int main()
{
A a;
}
Run Code Online (Sandbox Code Playgroud)
为什么代码会产生错误?我希望程序编译好.标准说N3797::12.8/7 [class.copy]:
如果类定义没有显式声明复制构造函数,则会隐式声明一个.如果类定义声明了移动构造函数或移动赋值运算符,则隐式声明的复制构造函数被定义为已删除; 否则,它被定义为默认值(8.4).如果 类具有用户声明的复制赋值运算符或用户声明的 析构函数,则不推荐使用后一种情况.
这是一个错误或我的误解?
struct A
{
~A(){ };
A();
};
A::A(){ }; //here you can define default constructor
int main()
{
A a;
}
Run Code Online (Sandbox Code Playgroud)
你已经定义了显式析构函数而不是构造函数,添加构造函数声明并将其定义为外部clas
| 归档时间: |
|
| 查看次数: |
789 次 |
| 最近记录: |