任务:类实例不让复制(noncopyable)。
“不写复制构造函数”是不行的,因为 C++ 会默认给你生成一个。C++ 03 为了实现 noncopyable 需要把复制构造函数和复制函数设为 private:
private: noncopyable( const noncopyable& ); noncopyable& operator=( const noncopyable& );
使用上也很简单,从 noncopyable 类派生就好(上面的代码不全,所以用 boost 的):
class YourClass : private boost::noncopyable{}
这个方法对处女座还是有一定杀伤力的,没用的东西为什么不直接删掉呢?所以 C++ 11 就允许你这么干了!
YourClass(const YourClass&) = delete;YourClass& operator=(const YourClass&) = delete;