cost 314 ms
使用“= default”声明复制构造函数与根本不声明它有什么区别? - What is the difference between declaring a copy constructor with "= default" or not declaring it at all?

我试图了解自动生成的各种功能的编译器代码的行为,例如: 析构函数复制构造函数赋值运算符移动构造函数移动赋值运算符与未声明的情况相比,使用“= default”声明它们会导致任何功能差异吗? 上面列出的函数对这个问题的回答是否不同? 如果没有功能差异,使用这两种情况的后果是什么? 使用“= defa ...

如何对包含带有字符串的自定义对象矢量的类正确地应用5(或零?)规则 - How to properly apply rule of 5 (or zero?) to a class containing a vector of custom objects with strings

我在围绕所有权问题以及通过移动最大化性能方面遇到麻烦。 想象一下这套模拟Excel工作簿的类的假设。 等等: 一个工作表类将包含一个行向量 一个工作簿类将包含一个向量的工作表 我觉得不需要为MWE实施最后两个,因为它们实际上是Row的副本(我的假设是它们将与R ...

零混乱规则? - Rule of Zero confusion?

所以我一直在阅读关于零规则的内容 。 简化版: 我不明白这条规则的目的。 三和五的规则是一种“经验法则”,但我不能看到“经验法则”或任何其他具有此规则的特定意图。 详细版本: 我来引述一下: 具有自定义析构函数,复制/移动构造函数或复制/移动赋值运算符的类应专门处理 ...

零与基类析构函数的规则 - rule of zero vs. base class destructors

我有一个基类Base和一个派生类D ,我想为我自动生成移动构造函数和移动赋值运算符。 遵循Zero规则 ,我将所有内存管理留给编译器,只使用level-2类(没有原始指针,数组等): 这应该是吧,对吗? 输入C ++核心指南 : 基类析构函数应该是公共的和虚拟的,或者是 ...

C++ 零规则&什么是“用户声明”构造函数? - C++ Rule of Zero & what is “user-declared” constructor?

根据Orbit 中的 Lightness Races 的澄清,我缩小了我的帖子范围。 阅读这篇文章后:零规则, 我是最明白的,但我仍然想解决一些我有不清楚的问题: 1.看这句话: 如果类 X 的定义没有显式声明移动构造函数,则当且仅当: X 没有用户声明的复制构造函数,并且 ...

为什么析构函数禁用隐式移动方法的生成? - Why does destructor disable generation of implicit move methods?

我试图通过阅读此博客了解零规则的含义。 IMO,它说如果您声明自己的析构函数,请不要忘记将移动构造函数和移动赋值设为默认值。 示例: “添加析构函数有禁用生成移动函数的副作用,但由于 Widget 是可复制的,因此所有用于生成移动的代码现在都会生成副本。换句话说,向类添加析构函数可能 ...

理解零规则 - Understanding rule of zero

我有一个基类,我不想让派生类可复制。 为了使一切都明确,我以这种方式实现它: 这是做这种事的正确方法吗? 根据我的知识和我所读到的,答案是肯定的,但我想在将其引入生产系统之前确定。 编辑 总结一下:1)几乎总是移动操作员不应该被删除。 那是因为“有无限的东西需要可动性 ...

unique_ptr,自定义删除和零规则 - unique_ptr, custom deleter, and Rule of Zero

我正在编写一个使用C接口创建的两个对象的类。 对象看起来像: (类似于bar_t )。 因为C ++ 11,我想将它们包装在智能指针中,所以我不必编写任何特殊方法。 该类将拥有这两个对象的唯一所有权,因此unique_ptr逻辑上有意义......但我仍然需要编写一个构造函数: ...

C ++ Zero of Zero:多态删除和unique_ptr行为 - C++ Rule of Zero : polymorphic deletion and unique_ptr behavior

在最近实施零规则主题下的超载期刊中 ,作者描述了我们如何避免编写五个操作符规则,因为编写它们的原因是: 资源管理 多态删除 这两个都可以通过使用智能指针来处理。 在这里,我对第二部分特别感兴趣。 请考虑以下代码段: 在这种情况下,正如文章的作者解释的 ...

“零规则”是否也适用于具有虚拟方法的类? - Does "The Rule of Zero" also apply for classes with virtual methods?

我发现Peter Sommerlads 幻灯片(p.32) 中也提到的零规则非常引人注目。 虽然,我似乎记得有一个严格的规则,即必须定义析构函数 virtual ,如果该类具有虚拟成员并且实际上是派生的。 析构函数的主体甚至可能是空的(它只需要 vtbl 中的条目)。 我似乎记得在使用层次结 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM