=default: 用于显式要求编译器提供合成版本的四大函数(构造、拷贝、析构、赋值) 
例如:

class A{
public:
    A() = default;
    A(const A& a) = default;
    A& operator=(A&);
    ~A() = default;
}

 

我们只能对具有合成版本的成员函数使用=default;

=delete,用于定义删除函数,在旧标准下,我们如果希望阻止拷贝可以通过显式声明拷贝 
构造函数和拷贝赋值函数为private,但新标准下允许我们定义删除函数,例如:

struct NoCopy{
    NoCopy() = default;
    NoCopy(const NoCopy&) = delete; // 阻止拷贝
    NoCopy& operator=(const NoCopy&) = delete; //阻止赋值
    ~NoCopy() = default;
}

 

=delete可以告知编译器,不生成默认的这些成员。 
这里有两点要注意: 
1、=delete可以使用在任意的函数上(可以引导函数匹配过程),除了析构函数(析构函数为删除函数将 
导致该类型无法销毁);=default必须用在有默认合成函数的函数上。 
2、=delete必须出现在函数第一次声明的时候。

 

参考:https://blog.csdn.net/u010640235/article/details/51286445

相关文章:

  • 2021-07-17
  • 2022-01-23
  • 2021-06-19
  • 2022-12-23
  • 2022-12-23
  • 2021-09-15
猜你喜欢
  • 2021-08-01
  • 2021-06-28
  • 2021-06-14
  • 2021-12-03
  • 2021-08-03
  • 2021-12-14
相关资源
相似解决方案