条款6:若不想使用编译器自动生成的函数,就该明确拒绝(Explicity disallow the use of compiler-generated functions you do not want)
class uncopyable{
protected:
uncopyable(){}; //允许derived 对象构造和析构
~uncopyable(){};
private:
uncopyable(const uncopyalbe& ); //但阻止copying
uncopyable& operator= (const uncopyalbe&);
};
class homeforsale: private uncopyable{ //class 不再声明
....... //copy 构造函数或
}; //copy assignment 操作符
一般要么client、member函数、friend 函数 尝试调用拷贝homeforsale object。这种写法都会明确拒绝。
NOTE:
为了驳回编译器自动(暗自)提供的机能,可将相应的成员函数声明为private并且不予实现,使用uncopyable这样的base class 也是一样的。
狠芯低成本,专芯低功耗,计划高性能。