06-若不想自己写的类被copy

条款06-若不想使用编译器自动生成的函数,就该明确拒绝

为驳回编译器自动(暗自)提供的机能,可将相应的成员函数声明为 private并且不与实现。

目的:生成的类是独一无二的,不允许被执行拷贝等操作。

方法1:将自己的 copy构造函数 和 等号重载运算符写成“只有声明”,不写对象。

class HomeForSale{
    public:
    ...
    private:
    	//HomeForSale(sonst HomeForSale &obj);				//常规写法拷贝构造函数
    	//HomeForSale& operator=(const HomeForSale& &obj);	//常规写法 等号重载符
    	HomeForSale(sonst HomeForSale &);
    	HomeForSale& operator=(const HomeForSale&);
};

方法2:将父类写成 “只有声明”,不写对象。然后去继承这个父类。

class Uncopyable{
    protected:
    	Uncopyable(){}							//允许对象进行 构造 和 析构
    	~Uncopyable(){}
    private:
    	Uncopyable(const Uncopyable&);			//但阻止拷贝
    	Uncopyable& operator=(const Uncopyable);
};

class sun : private Uncopyable{
    ...
};

你可能感兴趣的:(06-若不想自己写的类被copy)