c++ - 禁止类复制和分配的宏。谷歌-vs- Qt

标签 c++

要禁止复制或分配类,通常的做法是创建复制构造函数 和赋值运算符私有(private)。 Google 和 Qt 都有宏来使这变得容易和可见。 这些宏是:

谷歌:

#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
  TypeName(const TypeName&);   \
  void operator=(const TypeName&) 

Qt:

#define Q_DISABLE_COPY(Class) \
  Class(const Class &); \     
  Class &operator=(const Class &);

问题: 为什么两个赋值运算符的签名不同? Qt版本似乎是正确的。 两者的实际区别是什么?

最佳答案

没关系。返回类型不是函数签名的一部分,因为它不参与重载决议。因此,当您尝试执行赋值时,无论您是否使用返回类型,两个声明都会匹配。

而且由于这些宏的全部意义在于函数永远不会被调用,因此返回 void 并不重要。

关于c++ - 禁止类复制和分配的宏。谷歌-vs- Qt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1454407/

相关文章:

c++ - 如何在 clang 中选择特定的 gcc-toolchain?

c#代码转成QT C++

c++ - C++中的顶级是什么?

c++ - 链表查找函数 C++

c++ - 为什么在 GCC 4.4.1 中我不能在函数模板中声明默认参数?

C++:通过行号获取行

c++ - 是否可以在 Visual Studio 2013 中设置多个条件断点?

c++ - 如何初始化 CUDA 以便我可以进行有效的执行时间测量?

c++ - 由于构造函数无法推回类对象

c++ - std::stack 是使用双链表实现的吗?