隐式声明的特殊成员函数

2024-04-11

基本上隐式声明了四个特殊函数。

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

问题:

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


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

但是,如果您发现自己声明了 2、3 或 4 中的任何一个,那么您很可能应该声明其他两个,即使编译器隐式声明了它们。这被称为三法则 http://en.wikipedia.org/wiki/Rule_of_three_%28C%2B%2B_programming%29.

Edit在 C++11 中也隐式声明了移动复制构造函数 and a 移动赋值运算符,所以三法则就变成了五法则。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

隐式声明的特殊成员函数 的相关文章

随机推荐

  • 如何在 Laravel 5.5 中获取验证消息

    大家好 我正在开发 Laravel 5 5 在这里我需要显示我的 API 的验证消息 到目前为止我已经这样做了 validator Validator make request gt all first name gt email requ
  • grep 时间命令输出

    Using time ls 我有以下输出 time ls l total 2 rwx 1 FRIENDS None 97 Jun 23 08 59 location txt rw r r 1 FRIENDS None 10 Jun 23 0
  • JavaScript OOP 原型在构造函数之外?

    我正在阅读developer mozilla org 的 OOP JS 指南 并发现了以下代码片段 function Person gender this gender gender Person prototype gender Pers
  • 标签 在 Google 脚本中意味着什么?

    是否是标签Google 脚本的特定语法或者它可以在纯 html javascript 页面中工作吗 有没有相关的描述 这类似于PHP 标签 但当我看到这个时我怀疑 正式地 这些代码在 GAS 文档中被称为 scriptlet 它们是用于服务
  • 缓存 auth_request 中的令牌

    我想缓存请求标头字段授权中的令牌 Authorization Bearer abcdefghijklmnopqrstuvwxyz 我的目标是 我不必验证验证服务器上的每个请求 如果授权令牌已缓存 且有效 则请求应调用 API 而无需验证 l
  • 如何有效地逐行迭代“Vec>”?

    我正在写一个图书馆 它采用了Vec
  • 为什么 PostgreSQL 在 Windows 上这么慢?

    我们有一个使用 MySql 运行的应用程序 在我们发现 MySql 不支持 PostGIS 所具有的某些 GIS 功能后 我们发现它不适合我们的应用程序 注意 mysql 仅支持最小边界矩形 GIS 搜索 所以我们将数据库更改为 Postg
  • 导入模块时内存使用差异

    我想知道以这些方式导入模块时内存使用情况有什么区别 import Mod1 from Mod1 import from Mod1 import a b c 主要介于前两者之间 第一个使用最少的内存 因为它只在模块范围中创建单个名称 第二个使
  • libgcc.a 和 libgcc_s.a 之间的区别?

    我们已经安装了 GCC 和libgcc在 AIX 6 1 上使用 RPM 文件 我想知道的是为什么 libgcc s a 没有在以下文件夹下创建 opt freeware lib gcc powerpc ibm aix6 1 0 0 4 2
  • ASP.NET 母版页 DefaultButton 覆盖

    我有一个带有表单元素的母版页 并将 defaultbutton 属性设置为服务器端 ImageButton 在我的其中一个页面上 我想通过在 Page Load 事件中设置 Forms DefaultButton 来 覆盖 母版页默认按钮属
  • UILabel 文本没有改变,但是 xx.title 正在工作

    我有两个视图控制器 在第一个视图控制器中 我有名称列表 当我单击它时 我希望在第二个视图控制器中显示相同的名称 我有下面的代码 void tableView UITableView tableView didSelectRowAtIndex
  • didChangeObject:未调用 NSFetchedResultsController

    我几乎尝试了所有方法 但无法找出问题所在 我有一个 NSFetchedResultsController 并从核心数据中获取一些帖子 然后我有一个方法 可以将新帖子插入到同一上下文中并保存上下文 通常 现在应该调用 didChangeObj
  • 将图像置于 div 中居中

    我已经在 a 中设置了图像的边框div成为无 我现在想将该图像放在其包含的 div 中居中 我尝试过使用margin 0 auto 但这没有用 我确信我忽略了一些愚蠢的事情 但我想寻求 stackoverflow 社区的帮助 这样我就不需要
  • Azure WebJobs SDK 基础知识

    我想了解 Azure WebJobs SDK 上的 JobHostConfiguration 我在哪里可以找到配置 它在 app config 上吗 JobHostConfiguration 如何识别这是不是 IsDevelopment 我
  • 自定义属性与非自定义属性?

    实现的东西ICustomAttributeProvider接口将允许您获取已通过以下方式应用到它的自定义属性GetCustomAttributes方法 据我了解 自定义属性基本上是一个特殊的类 以 Attribute 结尾并扩展Attrib
  • iCloud Drive 通过 NSMetadataQuery 列出目录和文件

    I have built an iCloud enabled app named rmc My app now can upload files to iCloud Drive and get metadata by NSMetadataQ
  • Asp.net MVC Web Api Http 放置和删除请求失败

    我正在使用 Asp net MVC 4Web Api项目 我的应用程序使用 mvc 来实现网站 它向 Web API 发出 http 请求以实现服务器功能 对控制器的常规页面请求工作正常 并且能够显示网页 该应用程序能够使get and p
  • Hibernate Annotations - 字段访问和属性访问哪个更好?

    这个问题有点相关Hibernate注解放置问题 https stackoverflow com questions 305880 hibernate annotation placement question 但我想知道哪个是better
  • 窗口后 Apache-beam 挂在 groupbykey 上 - 不触发

    TLDR 如何使用 python SDK 更正触发计数窗口 Problem 我正在尝试创建一个用于转换和索引维基百科转储的管道 目标是 从压缩文件中读取 只需一个进程并以流式传输方式 因为该文件不适合 RAM 并行处理每个元素 ParDo
  • 隐式声明的特殊成员函数

    基本上隐式声明了四个特殊函数 默认构造函数 默认析构函数 默认赋值运算符 默认成员复制运算符 问题 如果其中任何一个是由用户定义的 例如 析构函数 其余三个函数将不会被声明 这是正确的吗 或者 它只适用于默认构造函数 而复制构造函数 如果你