Item 6 如何禁用编译器产生的函数

如果要禁用编译器自动产生的copy ctor和拷贝构造函数,一般用下面的方法:

更明智的办法是定义一个空的基类:

1> 当客户/成员函数/友元函数要拷贝UniqueMoo对象时,编译器自动调用Uncopyable的拷贝函数,于是产生编译错误。
2> Uncopyable没有成员变量,所以在单重继承时,一般会有empty base class optimization。多重继承时则一般没有。
3> Boost里有现成的实现:noncopyable

你可能感兴趣的:(编译器)