未调用复制构造函数进行复制初始化或优化?

2023-12-02

如果创建了复制构造函数private then in

Case 1:没有错误,编译器不关心复制构造函数是否在类中定义。

Case 2:错误,复制构造函数是私有的并且何时创建public,它被省略了。

是否直接优化了副本而没有注意到构造函数是否已创建private?

#include <string>
using std::string;

class T
{
    string s;
    T(const T &obj):s(obj.s){}
public:
    T(const string &str):s(str){}
};

int main()
{
    T a = ("Copy Initialization");     //Case: 1

    T b = T("Copy Initialization");    //Case: 2
}

案例 2 在 N3225 中低于 12.8/31:

如果程序是格式错误的 复制/移动构造函数或复制/移动 对象的赋值运算符是 隐式 odr-used 和特殊 成员函数不可访问。

仅仅因为复制因子被省略并不意味着它没有被 ODR 使用。 3.2/2:

一组候选者中的一个成员 函数是 odr-used 如果是 由重载决策选择时 引用自a 潜在评估的表达。 [注意:这包括对命名的调用 函数 (5.2.2)、运算符 重载(第 13 条)、用户定义 转换 (12.3.2)、分配 新的放置功能(5.3.4),如 以及非默认初始化 (8.5)。复制构造函数或移动 构造函数是 odr 使用的,即使 调用实际上被省略了 执行。 ——尾注]

当然要注意 MSVC 是not完全符合 C++0x,因为 (a) C++0x 还不是标准,并且尚未最终确定; (b) MSVC 还没有实现最新的所有内容。但这个东西与 C++03 相比并没有实质性改变,所以我相当有信心这个解释仍然成立。

情况 1 也会属于这种情况,除了在我检查过的两个 C++03 编译器上它没有达到那么远,因为不可能从字符串文字到 T 的转换。我懒得去检查是否C++0x 中允许任何其他转换序列,任何地方都可能有一个新子句:-)

对我来说,即使有公共复制者,为什么 MSVC 允许情况 1 仍然是个谜。它允许在严格的 C++03 模式下使用吗?

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

未调用复制构造函数进行复制初始化或优化? 的相关文章

  • 更新面板工作速度非常慢

    我正在编写一个用户可以注册的应用程序 注册时 可以选择多个选项 并根据这些注册字段可见或不可见以及是否必需 我想出了一个想法 所有字段都将位于 updatePanel 中 当用户更改注册选项时 我将在服务器端设置这些字段的可见性 它可以工作
  • 尝试了解使用服务打开对话框

    我已经阅读了有关使用 mvvm 模式打开对话框的讨论 我看过几个使用服务的示例 但我不明白所有部分如何组合在一起 我发布这个问题寻求指导 以了解我应该阅读哪些内容 以更好地理解我所缺少的内容 我将在下面发布我所拥有的内容 它确实有效 但从我
  • Grpc - 将消息从一个客户端发送到连接到同一服务器的另一个客户端

    是否可以将消息从一个客户端发送到连接到同一服务器的另一个客户端 我想将数据从一个客户端发送到服务器然后发送到特定客户端 我想我需要获取客户端 ID 但我不知道如何获取此 ID 以及如何从服务器将此消息发送到该客户端 我这里有一个样本 这是一
  • 转换 const void*

    我有一个函数返回一个const void 我想用它的信息作为char 我可以将它投射为 C 风格的罚款 char variable但是当我尝试使用reinterpret cast like reinterpret cast
  • 如何在类文件中使用 Url.Action() ?

    如何在 MVC 项目的类文件中使用 Url Action Like namespace 3harf public class myFunction public static void CheckUserAdminPanelPermissi
  • 现代 C++ 编译器是否能够在某些情况下避免调用 const 函数两次?

    例如 如果我有以下代码 class SomeDataProcessor public bool calc const SomeData d1 const SomeData d2 const private Some non mutable
  • 如何将 .txt 文件中的数据转换为 xml? C#

    我在一个文本文件中有数千行数据 我想通过将其转换为更容易搜索的内容来轻松搜索 我希望 XML 或其他类型的大型数据结构 尽管我不确定它是否是最好的对于我的想法 每行的数据如下所示 第 31 册 托马斯 乔治 32 34 154 每本书都不是
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • 在 C# 中检查 PowerShell 执行策略的最佳方法是什么?

    当你跑步时Get ExecutionPolicy在 PowerShell 中 它得到有效的执行政策 https learn microsoft com en us powershell module microsoft powershell
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • C++ - 多维数组

    处理多维数组时 是否可以为数组分配两种不同的变量类型 例如你有数组int example i j 有可能吗i and j是两种完全不同的变量类型 例如 int 和 string 听起来您正在寻找 std vector
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • 将函数参数类型提取为参数包

    这是一个后续问题 解包 元组以调用匹配的函数指针 https stackoverflow com questions 7858817 unpacking a tuple to call a matching function pointer
  • 比较:接口方法、虚方法、抽象方法

    它们各自的优点和缺点是什么 接口方法 虚拟方法 抽象方法 什么时候应该选择什么 做出这一决定时应牢记哪些要点 虚拟和抽象几乎是一样的 虚方法在基类中有一个实现 可以选择重写 而抽象方法则没有 并且must在子类中被覆盖 否则它们是相同的 在
  • 如何解压 msgpack 文件?

    我正在将 msgpack 编码的数据写入文件 在编写时 我只是使用 C API 的 fbuffer 如 我为示例删除了所有错误处理 FILE fp fopen filename ab msgpack packer pk msgpack pa
  • C++:为什么 numeric_limits 对它不知道的类型起作用?

    我创建了自己的类型 没有任何比较器 也没有专门化std numeric limits 尽管如此 由于某种原因 std numeric limits
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • 为什么空循环使用如此多的处理器时间?

    如果我的代码中有一个空的 while 循环 例如 while true 它将把处理器的使用率提高到大约 25 但是 如果我执行以下操作 while true Sleep 1 它只会使用大约1 那么这是为什么呢 更新 感谢所有精彩的回复 但我
  • 是否允许全局静态标识符以单个 _ 开头?

    换句话说 可能static 文件范围 全局变量恰好以一个下划线开头 而不会产生与 C 实现发生名称冲突的可能性 https www gnu org software libc manual html node Reserved Names

随机推荐

  • 使用 AutoMapper 进行条件投影

    假设我在 消息 类上有一个 注释 属性 我还有 2 个具有 Body 属性的类属性 如果该类设置了任一类属性 我希望 AutoMapper 将 Body 属性投影到模型的 comment 属性中 否则使用消息类上的普通 comment 属性
  • 延迟加载和组件

    我正在将我的应用程序移至延迟加载 并且发现了两种加载组件的方法 一种是拥有 X 个组件和只有一个全局的 elements module 例如https www 9lessons info 2017 12 ionic angular lazy
  • Delphi loadlibrary() 中的错误

    我给了我的软件用户一个从 openfile 对话框中选择 dll 的机会 这样我的用户就可以从我的网站下载 dll 并将其与主项目一起使用 一切工作正常 它甚至可以发现 dll 是由我提供的或选择了无效的 dll 但是如果用户选择重命名的文
  • 使用纬度和经度计算多边形面积

    我正在使用我在这篇文章中找到的解决方案 使用从笛卡尔空间和世界文件生成的纬度和经度计算多边形面积 有问题 因为我得到的值不是真实的 例如 我们知道一个足球场应该有大约 5 300 00 平方米 对吧 但计算结果为 5 759 154 21
  • Quick Union Java 实现

    我一直在研究快速联合算法 下面的代码是实现的示例 有人可以向我解释一下里面发生了什么吗根法 please public class quickUnion private int id public void QuickUnionUF int
  • NSPredicate 表达式中 SUBQUERY 的快速解释

    关于 Apple 的 SUBQUERY 关键字的文档似乎为零 我在 SO 或 Google 上找不到关于它的简单解释 这是一个阴谋 Please 内部圈子里的人可以快速解释一下它的语法 以便我可以使用它吗 SUBQUERY Bs x x I
  • C++ 错误:字段的类型“int []”不完整

    我正在用 C 创建虚拟机 但遇到了这个错误 error field has incomplete type int int instrarr 我完全不知道 int 数组有什么问题 有人可以看一下并让我知道我做错了什么吗 我已经看了一个多小时
  • 为什么 order 在 /v2/shares 端点上不起作用

    在 hootsuite com 我们正在使用v2 shares在很长一段时间内为多个社交档案创建报告 该端点的文档指定here即 共享按创建时间排序 此刻 当我去 我会明白的 activity urn li activity 6537431
  • 要求在不同的行上设置 /p 变量

    我在批处理代码中看到 您可以在单独的行上要求用户输入 或者在询问时继续输入或执行其他操作 例如 它看起来像这样 enter your name name input would be here enter name above 代码可能看起
  • 为什么在这种带有泛型参数的情况下不考虑隐式转换?

    考虑以下代码 源自元斯卡拉项目 object Units case class Quantity M lt MInt T Numeric value T type This Quantity M T def M2 lt MInt m Qua
  • 当我执行“捆绑更新”时,我从不在我的 gemfile 中的 gem 收到错误。我如何忽略这种依赖性?

    我正在开发一个使用 twitter bootstrap rails 的项目 该项目构建在 Linux 机器上 并使用 ruby racer 作为 JavaScript 运行时 我遇到了一些问题 因为 ruby racer 似乎与 Windo
  • FileSystemWatcher 与轮询监视文件更改

    我需要设置一个应用程序来监视在本地或网络驱动器上的目录中创建的文件 会不会FileSystemWatcher或者对计时器进行轮询将是最好的选择 我过去曾使用过这两种方法 但并不广泛 这两种方法都存在哪些问题 性能 可靠性等 我见过文件系统观
  • ARM 代码分析器

    我想在arm 9上分析我的代码 是否有任何分析器可以为我提供函数调用时间和每个函数所花费的总周期 我更喜欢任何免费的分析器 我喜欢在 Linux 中使用 kcachegrind 我不知道有什么免费的 ARM 分析器 你可以试试ARM RVD
  • Node.js 堆内存不足

    今天 我运行文件系统索引脚本来刷新 RAID 文件索引 4 小时后它崩溃并出现以下错误 md5 241613 241627 97 5 md5 241614 241627 97 5 md5 241625 241627 98 1 Creatin
  • SonarLint V3:“可序列化”类中的字段对于 List 接口应该是瞬态的或可序列化的

    我的问题非常类似于this除了我在 SonarLint V3 squid S1948 中遇到的这个问题 我的代码是 public class Page
  • 使用 JSCH Java 反向 SSH 隧道 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 是否可以使用 JSCH 进行反向 ssh 连接 如果不是 是否有其他纯 Java 库可以用来进行反向隧道 SSH 连接 我想模仿的命令类似于 ssh
  • 如何使用 DataFrames 在 PySpark 中使用窗口函数?

    试图弄清楚如何在 PySpark 中使用窗口函数 这是我想要做的一个示例 只需计算用户发生 事件 的次数 在本例中 dt 是模拟时间戳 from pyspark sql window import Window from pyspark s
  • Chrome 扩展:后台脚本捕获网络和 HTTP 错误

    我正在开发一个小型 Chrome 扩展程序 供个人在非常特殊的情况下使用 网站自动化 但我遇到了问题 如何捕获后台脚本上的网络错误并调用某个函数 我已经实现了这个方法 chrome webRequest onErrorOccurred ad
  • D3 力定向图:为什么没有出现标志?

    情况 Each node应该有它相应的标志 但事实并非如此 CODE body font family Lato background color F5F5F5 title margin top 30px margin bottom 30p
  • 未调用复制构造函数进行复制初始化或优化?

    如果创建了复制构造函数private then in Case 1 没有错误 编译器不关心复制构造函数是否在类中定义 Case 2 错误 复制构造函数是私有的并且何时创建public 它被省略了 是否直接优化了副本而没有注意到构造函数是否已