c++中对拷贝控制成员使用=default,=delete

本文详细介绍了C++中拷贝控制成员的两种关键用法:使用=default来请求编译器生成默认版本,以及使用=delete来阻止拷贝或赋值操作。此外还讨论了如何通过将拷贝构造函数声明为私有来阻止拷贝。

1.使用=default

我们可以通过将拷贝控制成员定义为=default来显式地要求编译器生成合成的版本。

class a()

{

public :

a()=default;

a(a&)=default;

~a()=default;
}

在类内声明为default, 合成的函数隐式地声明为内联函数(就像其他类内声明的成员函数一样)。不希望内联,类外定义。

2.使用=delete

有时候我们不希望类进行拷贝,需要机制阻止拷贝或赋值。不定义拷贝控制成员并不奏效,编译器会生成合成版本。加=delete,表示函数虽然声明,但不能使用。

必须出现在第一次声明时。

析构函数不能是删除成员,否则无法销毁对象了。

当一个类中有数据成员不能默认构造,拷贝,复制或销毁,对应的成员函数将被定义为删除的。

阻止拷贝的另一种方式private

将拷贝构造函数声明为private

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值