码迷,mamicode.com
首页 > 其他好文 > 详细

default & delete

时间:2018-05-01 12:24:23      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:默认   不能   16px   运算符   let   定义   div   size   highlight   

一、使用“=default”

1. 显式生成拷贝控制成员的合成版本

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

2. 只能对具有合成版本的成员函数使用“=default”

  • 默认构造函数
  • 拷贝控制成员(拷贝构造函数、拷贝赋值运算符、析构函数、移动构造函数、移动赋值运算符)

3. 使用“=default”生成的合成函数分为内联的和非内联的

class A {
public:
	A() = default;						// 在类内用=default-->内联的 
	A(const A &) = default;				// 在类内用=default-->内联的 
	A& operator=(const A &);
};

A& A::operator=(const A &) = default;	// 在类外用=default --> 非内联的 

  

二、使用“=delete”

1. 将相关的函数定义为删除的函数

  • 删除的函数:我们虽然声明了它,但不能以任何方式使用它。

2. =delete必须出现在函数第一次声明的时候

3. 可以对任何函数指定=delete

  • 删除的函数的主要用途还是禁止拷贝控制成员

4. 析构函数不能使用“=delete”

5. 示例

class A {
public:
	A() = default;						// 使用合成的默认构造函数 
	A(const A &) = delete;				// 阻止拷贝 
	A& operator=(const A &) = delete;	// 阻止赋值 
	~A() = default;						// 使用合成的析构函数 
};

 

default & delete

标签:默认   不能   16px   运算符   let   定义   div   size   highlight   

原文地址:https://www.cnblogs.com/xzxl/p/8975759.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!