3 回答
TA贡献1777条经验 获得超10个赞
这是C ++ 11的新功能。
这意味着您要使用编译器生成的该函数的版本,因此您无需指定主体。
您还可以= delete用于指定您不希望编译器自动生成该函数。
随着移动构造函数和移动赋值运算符的引入,生成自动版本的构造函数,析构函数和赋值运算符的规则变得相当复杂。使用= default和= delete使事情变得容易,因为您无需记住规则:您只需说出要发生的事情即可。
TA贡献2051条经验 获得超10个赞
这是C ++ 0x的一项新功能,可告诉编译器创建相应构造函数或赋值运算符的默认版本,即仅对每个成员执行复制或移动动作的版本。这很有用,因为默认情况下并非总是生成move构造函数(例如,如果您有自定义析构函数),这与copy构造函数(以及类似的赋值方法)不同,但是如果没有什么不平凡的编写,最好让编译器会处理它,而不是每次都自己拼出来。
还要注意,如果提供任何其他非默认构造函数,则不会生成默认构造函数。如果仍然需要默认的构造函数,则可以使用此语法来使编译器合而为一。
作为另一个用例,在某些情况下不会隐式生成副本构造函数(例如,如果您提供自定义的移动构造函数)。如果仍然需要默认版本,则可以使用此语法进行请求。
有关详细信息,请参见标准的12.8节。
TA贡献1788条经验 获得超4个赞
它是C ++ 11中的新功能,请参见此处。如果您定义了一个构造函数,但想对其他构造函数使用默认值,则它会非常有用。在C ++ 11之前的版本中,您必须定义所有构造函数,即使它们等同于默认构造函数。
还要注意,在某些情况下,不可能提供用户定义的默认构造函数,该构造函数在默认和值初始化下的行为与编译器综合的行为相同。default使您能够恢复该行为。
- 3 回答
- 0 关注
- 571 浏览
添加回答
举报