禁止拷贝构造跟赋值
禁止拷贝构造和赋值
NoCopyable把拷贝构造和赋值函数 私有化,A私有继承NoCopyable了,自然也继承了NoCopyable的二者接口(并不需要实现),这样就起到作用啦。
C++实现时有时会希望有些类只保持一份独一无二的实例,因此要在设计上禁止拷贝构造和赋值。
muduo里陈硕大神就经常这样用,不过实现也很简单:
#include <iostream> class NoCopyable{ protected: NoCopyable(){ } virtual ~NoCopyable(){ } private: NoCopyable(const NoCopyable&); const NoCopyable& operator=(const NoCopyable&); }; class A : private NoCopyable{ }; int main(){ A a; A b; a = b; }
NoCopyable把拷贝构造和赋值函数 私有化,A私有继承NoCopyable了,自然也继承了NoCopyable的二者接口(并不需要实现),这样就起到作用啦。
可以自己测试下,