禁止在C++中复制构造和复制赋值

Jac*_*ock 0 c++

为了禁止复制构建和复制分配,我已经看到了boost noncopyable类,并且在Google样式指南中看到了DISALLOW_COPY_AND_ASSIGN宏.有没有理由更喜欢其中一种技术,或者应该注意哪些微妙的差异?

Joh*_*itb 6

我更喜欢对宏进行boost noncopyable,因为它不是宏,而且更容易(IMO)使用.

在实际代码中,我没有使用它们并且自己编写所需的两个声明.

但是,您可能感兴趣的一个细微差别是,当类本身尝试复制对象时(但后来无法链接),使用该宏或您自己的声明不会产生编译器错误.noncopyable但是在这种情况下也会发出编译器错误信号,因为它是基类,其函数声明为private,而不是类本身.

  • 使用`noncopyable`的另一个小优点是编译器生成的错误消息将包含单词"noncopyable",这可能更容易追踪错误实际上是什么.(我不知道这与我从未使用过的`DISALLOW_COPY_AND_ASSIGN`-macro相比如何) (5认同)