我发现使类不可复制对我的代码质量有很大帮助。最初我使用 boost::noncopyable 进行此操作,但我发现 VC++ 编译器错误不如私有成员有用(双击会导致代码中的错误位置)。
T(T const&);
T& operator=(T const&);
事实上,它提醒我有很多案例是类没有作为参考传递给他们应该有的地方。如此之多,以至于我非常希望即使在只需要复制构造一次的类上也能收到警告。
有没有好的方法来做到这一点?例如,当我真的想复制构造时,我正在考虑将上述两个方法保留为私有并添加一个公共 T(T const&,bool dummy) 构造函数来调用。或者,也可以将上述两种方法公开,并在复制构造时以某种方式激活编译器警告,在我想要的地方抑制警告。
或者也许有更好的方法?