为什么将类的特殊函数显式声明为“默认”

爱德华·罗斯托米扬

显式声明类的特殊功能default之间有什么区别。

class Myclass
{
public:

    Myclass() = default;
    virtual ~Myclass() = default;

    Myclass(MyClass&&) = default;
    Myclass& operator=(MyClass&&) = default;

    Myclass(const MyClass&) = default;
    Myclass& operator=(const MyClass&) = default;
};

MyClass{};

这2个声明之间有什么区别?为什么将默认行为功能明确指定为默认行为?

一些程序员哥们

因为在某些情况下,编译器可能不会添加构造函数,析构函数或运算符,即使您可能需要编译器生成的默认值。然后,通过使用显式default指示符,编译器将始终执行该操作。

您可以在class参考资料中找到更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么将Optional <T>声明为最终类?

为什么将接口声明为抽象?

为什么在Java中将String类声明为final?

为什么将函数参数声明为final?

为什么将Java接口方法声明为抽象方法?

为什么在Java中将类声明为静态?

为什么将Java常量声明为静态?

为什么不能将Java类声明为静态?

为什么HttpServlet类被声明为抽象的?

为什么允许将通用数组声明为实例变量?

为什么将Mapper和Reducer类声明为静态?

将函数的参数声明为final:为什么以及何时需要它?

为什么java.util.Scanner类声明为'final'?

为什么将main声明为数组可以编译?

为什么将CompletableFuture.allOf声明为CompletableFuture <Void>?

为什么静态成员函数只能在类定义中声明为静态,而不能在其自身定义中声明为静态?

为什么将内置库函数声明为标识符名称是合法的?

为什么必须将在A类中声明为好友的函数在B类中定义为公共函数?

为什么C ++编译器可以将函数声明为constexpr,而不能将其声明为constexpr?

为什么将变量声明为通配符类型

将子类实例(声明为基类)“重铸”到接口-它为什么起作用?

为什么将已实现的接口方法声明为“ public”?

为什么不能将函数的参数声明为val或var

为什么我可以将ref struct声明为c#7.3中的类的成员?

为什么在C#8.0中将局部函数声明为static

为什么将匿名JavaScript函数声明为函数参数?

当我将嵌套的静态Fragment类声明为private时,为什么会生成错误?

为什么将Thread的isAlive()方法声明为本机?

C ++:使用auto将类声明为函数内的变量