C++实现不可被拷贝的类

本文详细介绍了C++中类的拷贝构造函数和赋值操作,指出默认情况下C++类具有拷贝功能,并通过示例展示了如何使类不可被拷贝。重点在于解释了通过私有化拷贝构造函数和赋值操作来强制类只能通过指针进行引用,以减少内存管理和避免不必要的复制开销。
摘要由CSDN通过智能技术生成

 在C++中,类的拷贝主要是通过拷贝构造函数和赋值函数,再者就是为拷贝专门实现的成员方法。由于拷贝构造函数和赋值函数在用户为提供的情况下是由C++编译器自动生成的,而且是public成员,因此默认的C++类都有拷贝功能。若让一个C++类不能被拷贝,可显式地声明类的拷贝构造函数和赋值函数为私有函数,从而达到该类不可被拷贝的目的。下面简单地提供一个基类,任何需要提供不可被拷贝功能的C++类只需从此类派生即可。

/*
* 通过私有化拷贝构造函数和赋值函数而达到对象不可被拷贝的目的
* 任何需提供不能被拷贝功能的类可以直接从CNonCopyable派生即可
*/
class CNonCopyable
{
private:
    CNonCopyable(const CNonCopyable&);
    const CNonCopyable& operator=(const CNonCopyable&);

protected:
    CNonCopyable() { }
    ~CNonCopyable() { }
};

设计成不可拷贝的好处是 这样就强制只能以指针的方式使用; 就不能以拷贝类的方式来使用他啦, 因为反复拷贝的话要不断的创建内存空间,用指针的话开销要小的多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值