禁止拷贝构造和赋值

C++实现时有时会希望有些类只保持一份独一无二的实例,因此要在设计上禁止拷贝构造和赋值。

muduo里陈硕大神就经常这样用,不过实现也很简单:

#include 

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的二者接口(并不需要实现),这样就起到作用啦。

可以自己测试下,

你可能感兴趣的:(C,C++)