【发布时间】:2019-07-29 10:50:44
【问题描述】:
我不得不删除默认构造函数以确保始终使用参数化构造函数。 那时我想知道我删除的默认构造函数是否应该在公共或私有访问说明符下。
我刚刚编写了一个示例代码来测试它。我试图访问已删除的默认构造函数。
class A
{
public:
A(const int val)
{
assign = val;
}
private:
A() = delete;
int assign;
};
int main()
{
A obj1(5);
A obj2;
}
main.cpp:在函数'int main()'中:
main.cpp:35:7: 错误:'A::A()' 在此上下文中是私有的
一个 obj2;
main.cpp:28:5: 注意:这里声明为私有
A() = 删除;
main.cpp:35:7: 错误:使用已删除的函数‘A::A()’
一个 obj2;
main.cpp:28:5: 注意:在这里声明
A() = 删除;
【问题讨论】:
-
"我不得不删除默认构造函数以确保始终使用参数化构造函数。"否。如果您有其他构造函数,则不会声明默认构造函数。
标签: c++ c++11 coding-style