如果要禁用编译器自动产生的copy ctor和拷贝构造函数,一般用下面的方法:
更明智的办法是定义一个空的基类:
1> 当客户/成员函数/友元函数要拷贝UniqueMoo对象时,编译器自动调用Uncopyable的拷贝函数,于是产生编译错误。
2> Uncopyable没有成员变量,所以在单重继承时,一般会有empty base class optimization。多重继承时则一般没有。
3> Boost里有现成的实现:noncopyable
如果要禁用编译器自动产生的copy ctor和拷贝构造函数,一般用下面的方法:
更明智的办法是定义一个空的基类:
1> 当客户/成员函数/友元函数要拷贝UniqueMoo对象时,编译器自动调用Uncopyable的拷贝函数,于是产生编译错误。
2> Uncopyable没有成员变量,所以在单重继承时,一般会有empty base class optimization。多重继承时则一般没有。
3> Boost里有现成的实现:noncopyable