c++ - 为什么将类特殊函数显式声明为 "default"

标签 c++ class c++11 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{};

这两个声明有什么区别? 为什么明确指定默认行为函数为默认值??

最佳答案

因为在某些情况下,即使您可能需要编译器生成的默认值,编译器也可能不会添加构造函数、析构函数或运算符。然后通过使用显式 default 指示符,编译器无论如何都会这样做。

您可以在例如this class reference .

关于c++ - 为什么将类特殊函数显式声明为 "default",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44543986/

相关文章:

c++ - 如何实现加法除法?

java - Java 中的静态类有什么用?

C++ 将模板类传递给 void 函数

c++ - 如何包含 uniform_real_distribution 的最大值

c++ - 非抽象但无状态的类对于多重继承是否与纯抽象类一样安全?

c++ - 函数采用对范围而不是 View 的转发引用是否有好处?

c# - 将复杂结构编码到 C#

r - 如何原型(prototype)(启动)从其他插槽派生的 S4 插槽?

c++ - 绑定(bind)静态成员函数作为回调

C++ 用函数替换代码的最佳方法