C++中禁止对象赋值拷贝

直接上代码

  • 方式一:(复制构造函数以及赋值符号(=)均被设置为私有化)
class Children{
    public:
    Children(){
        cout<<"children()"<<endl;
    };
    ~Children(){
        cout<<"~children()"<<endl;
    }
    private:
    Children(const Children&);
    const Children&operator=(const Children&);
};
int main(){
    Children c1;
    Children c2=c1;
    return 0;
}

当执行创建对象c1时,代码可以执行,当开始进行对象复制拷贝时就会报错;

  • 方式二:(复制构造函数以及赋值符号(=)不需要设置为私有化,但需要加=delete表明函数已删除)
class Parent {
    public:
    Parent(){
        cout<<"parent()"<<endl;
    }
    ~Parent(){
        cout<<"~parent()"<<endl;
    }
    Parent(const Parent&)=delete;
    const Parent&operator=(const Parent&)=delete;
};
int main(){
    Parent p1;
    Parent p2 =p1;
    return 0;
}

当执行创建对象p1时,代码可以执行,当开始进行对象复制拷贝时就会报错;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值