条款:06 若不想让编译器自动生成函数,则明确拒绝

条款06 如果不想让编译器自动生成函数, 则需要在自定义的类中明确拒绝

1、C++编译器中, 会自动的, 无偿的,无私的给为我们没有声明的构造函数,析构函数, 复制构造函数, 复制操作符函数声明。

2、当我们想要一份独一无二的对象,这个对象不允许被复制,那么我们就需要在自定义的类中明确的拒绝复制构造函数, 复制操作符函数。

方法一:

将复制构造函数、复制操作符函数声明为private,这样因为我们声明了上述2个函数,编译器就不会帮我们再次声明;

class Test
{
public :
private :
    Test(const Test&);                     //复制构造函数
    Test & operator=(const Test &);  //复制操作符函数
};
缺点:如果是该类的成员函数或者是友元函数, 还是依旧可以调用这两个复制函数的。 这么不听话, 这么不听话......

方法二:

        定义一个只用用来阻止复制函数的基类。
class stopCopy
{
public :
       stopCopy();
       ~stopCopy();
private :
      stopCopy(const stopCopy &);
      stopCopy & operator=(const stopCopy);
}

class Test : public stopCopy
{

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值