最直观的想法是:将类的拷贝构造函数和赋值运算符重载声明为私有 private,但对于类的成员函数和友元函数依然可以调用,达不到完全禁止类的对象被拷贝的目的,而且程序会出现错误,因为未对函数进行定义。
class Uncopyable
{
public:
Uncopyable() {}
~Uncopyable() {}
private:
Uncopyable(const Uncopyable &); // 拷贝构造函数
Uncopyable &operator=(const Uncopyable &); // 赋值运算符
};
class A : private Uncopyable // 注意继承方式
{
};
简单解释:
C++ 11 支持 delete 直接禁用类的成员函数调用。
class Uncopyable
{
public:
Uncopyable() {}
~Uncopyable() {}
Uncopyable(const Uncopyable &) = delete; // 禁用拷贝构造函数
Uncopyable &operator=(const Uncopyable &) = delete; // 禁用赋值运算符
};
阅读量:1926
点赞量:0
收藏量:0