c++ - 隐式声明的特殊成员函数

标签 c++

有四个基本隐式声明的特殊函数。

  1. 默认构造函数
  2. 默认析构函数
  3. 默认赋值运算符
  4. 默认的成员复制操作符

问题:

如果其中任何一个由用户定义,[例如:Destructor] 其余三个函数将不会被声明。那是正确的吗? 或者 只适用于默认构造函数,复制构造函数?

最佳答案

如果您声明自己的任何 类型的构造函数(包括复制构造函数),则不再隐式声明默认构造函数。其余的是(除非您自己声明了其中之一)。

但是,如果您发现自己声明了 2、3 或 4 中的任何一个,那么您很可能应该声明另外两个,即使编译器隐式声明了它们。这被称为 rule of three .

编辑 在 C++11 中也有隐式声明的移动复制构造函数和一个移动赋值运算符,所以三的规则变成五法则。

关于c++ - 隐式声明的特殊成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11671282/

相关文章:

c++ - 从 C++/Unix 中的字符串读取 XML

c++ - “struct _ntl_gbigint_body”在哪里定义?

c++ - 使用 Crypto++ 比较恒定时间密码摘要

c++ - 为什么我不能使用一些 GLFW 方法

android - 在 android 上触摸返回按钮时如何移动到 cocos2d-x 中的另一个场景

c++ - Maemo 5 Qt : how to capture frame (RGB) from first and second camera?

c++ - 通过 FFI block 从 Haskell 调用共享库,而从 C 程序链接时则不会

C++ 访问静态数组与新数组之外的边界?

c++ - 对包含索引小部件的 QTableView 列进行排序

c++ - 有没有一种方法可以编写一个宏来仅使用变量名(即等同于 std::forward<T>(t) 的 FWD(t))进行完美转发?