C++实现不可被复制的类
2021-04-21 00:28
标签:c++语言 不能 示例 const 情况下 派生 tor col 自动 C++语言编程中,类的拷贝主要是通过拷贝构造函数和赋值函数来进行,再者就是为拷贝专门实现的成员方法。 一个默认的C++类所拥有的成员函数: 程序员有时候需要给文件加上权限,让这些机密文件不能被随意拷贝,这时候就需要用C++实现不可被拷贝的类。 Noncopyable类示例: C++实现不可被复制的类 标签:c++语言 不能 示例 const 情况下 派生 tor col 自动 原文地址:https://www.cnblogs.com/music-liang/p/13282999.html
由于拷贝构造函数和赋值函数在用户为提供的情况下是由C++编译器自动生成的,而且是public成员,因此默认的C++类都有拷贝功能。class Empty{}; //空类Empty
Empty(); //默认构造函数
Empty(const Empty &);//默认拷贝构造
~Empty(); //默认析构函数
Empty & operator=(const Empty &)//默认赋值运算符
Empty *operator&();//取地址运算符
const Empty *operator &() const; //取地址运算符const
若让一个C++类不能被拷贝,可显式地声明类的拷贝构造函数和赋值函数为私有函数,从而达到该类不可被拷贝的目的。
下面简单地提供一个基类,任何需要提供不可被拷贝功能的C++类只需从此类派生即可。
————————————————#ifndef BASE_NONCOPYABLE_H
#define BASE_NONCOPYABLE_H
class noncopyable
{
public:
noncopyable(const noncopyable&) = delete;
void operator=(const noncopyable&) = delete;
protected:
noncopyable() = default;
~noncopyable() = default;
};
#endif // BASE_NONCOPYABLE_H