【发布时间】:2012-12-24 18:28:30
【问题描述】:
根据 C++11 标准,以下内容是否合法(类定义之外的= default)?
// In header file
class Test
{
public:
Test();
~Test();
};
// In cpp file
Test::Test() = default;
Test::~Test() = default;
【问题讨论】:
-
这很好,标准甚至在示例中使用它 (
§8.4.2/3)。= default和= delete只是“普通”函数体(无论如何,按照规范),即你在定义中写的内容。 -
请注意,默认定义可以出现在函数的第一个声明之后,而删除的定义必须是函数的第一个声明。
-
@Xeo 听起来像是一个答案。
-
请注意,以这种方式默认的构造函数,仍然是用户提供的构造函数。因此,您的课程
Test不是一个微不足道的课程。见stackoverflow.com/a/7169675/396551
标签: c++ c++11 constructor destructor default-constructor