这是《Effective C++》中第6个原则,在某些情况下你不想让某些类的对象被拷贝,那么在这种情况下即使你不写copy构造函数和copy赋值操作符编译器也会为你生成,那么你不得不自己写它们俩。
而你又不希望别人调用它们,所以这时你要将它们声明为private类型。一旦你写了,编译器就不会自动调用父类的copy构造函数和copy赋值操作符。
即便这样本类内部成员函数和友元函数还是可以调用它们,该如何是好?办法就是你只声明这些函数而不去实现,没有实现就自然没有功能了,而既然实际上没用,你甚至连形参都可以省略,只在形参列表中写个形参类型即可,就像下图类的定义所示的这样:
其中的几个函数实现如下所示:
从上图可见,copy构造函数和copy赋值操作符都没有实现。在主程序中是如下调用的:
运行结果如下所示:
出现了错误提示,说copy构造函数无法解析。
现在我把copy构造函数和copy赋值操作符都注释掉。
在运行得如下结果:
而本思想只在阐述如果你不想让编译器为你自动生成函数,你就要自己手写。