rule-of-three相关内容
考虑以下程序: #include 结构 S {S (){}私人的:无效 *ptr = nullptr;std::string str = "";};int main(){} 当在 GCC 4.7.1 上使用 -Weffc++ 编译时,会吐出: 警告:“结构 S"具有指针数据成员 [-Weffc++]警告:但不会覆盖 'S(const S&)' [-Weffc++]警告:或 '
..
所以,看完关于右值引用的精彩讲座,我认为每个类都会从这样的“移动构造函数"中受益,templateMyClass(T&& other) edit 当然还有一个“移动赋值运算符",template我的课堂&operator=(T&& other) 正如菲利普在他的回答中指出的那样,如果它有动态分配的成员,或者通常存储指针.就像您应该拥有复制构造函数、赋值运算符和析构函数一样,如果前面提到的要点适
..
我目前正在开发一个建立在沙子基础上的代码库. 据称经过测试的库中有许多违反“3 法则"的类.大多数声明了一个非平凡的析构函数,但缺少复制构造函数或赋值运算符. 是否有任何编译器标志 (gcc) 或静态分析工具会在类违反 3 规则时发出警告? 目前我们在 GCC 4.4 版中使用 Coverity. 解决方案 Coverity 有.我们使用 6.5 版.有一个检查器 MIS
..
根据以下广为人知的表,当用户提供一个或多个副本分配,副本构造函数和析构函数中的一个或多个时,不赞成在C ++ 11中自动生成默认副本构造函数和副本分配的编译器.(红色单元格表示已弃用).鉴于"3规则",这是完全合理的.但是,该表显示,在用户提供的副本构造函数/赋值的情况下,不建议使用默认析构函数的生成. 此设计决定的依据是什么?
..
我尝试在业余时间学习C ++基础并按照书中的练习进行学习。首先,当我输入9作为行,输入8作为列时,我得到了malloc释放错误。其次,我的输出为0,看不到输入的内容。我想编写该程序,因为我可以加强三个规则。当然不是功课。此外,我认为这是一个困难的问题和有效的问题。如果问题可以得到解答,将很有帮助。因为我已经在Google上进行搜索,所以找不到关于解决方案的正当做法。另外,您可以检查我的复制构造函数
..
我正在编写一个C ++应用程序,其中有一个 Controller 类,该类带有两个嵌套结构,在头文件中定义如下: class控制器{ struct help_message {// controller.hpp,第19行 std :: string摘要; std :: string详细信息; help_message(const std :: string& ;, con
..
定义接口类时声明实例化方法的正确方法是什么? 出于明显的原因,抽象基类必须具有虚拟析构函数。但是,将给出以下编译警告:“'InterfaceClass'定义了非默认析构函数,但未定义副本构造函数,副本赋值运算符,move构造函数或move 赋值运算符”,即“五规则”。 我理解为什么通常应遵循“五规则”,但是它仍然适用于抽象基类或接口吗? / p> 我的意思是: clas
..
第12.8/7节中的标准说: 如果类定义未明确声明副本 构造函数,一个隐式声明.如果类定义 声明移动构造函数或移动赋值运算符, 隐式声明的副本构造函数定义为删除;否则, 它被定义为默认值(8.4). 如果不赞成使用后一种情况 类具有用户声明的副本分配运算符或用户声明的 析构函数.因此,对于类定义 struct X { X(const X&, int); }; 隐式声明了一个
..
我已阅读“三项规则”,什么是三项规则? 总结如下: 如果您需要显式声明析构函数,复制构造函数或复制赋值 运算符自己,你可能需要显式声明所有这三个。 我的问题是:在C ++应用程序中,我有一个管理资源的类(具有处理删除指针的析构函数)。我知道应用程序使用赋值运算符在所有的地方,但我绝对确定在应用程序中没有使用复制构造函数,即使用类型类c(..);类d(c); 所以在这些情况下,我仍然需
..
请考虑以下程序: #include -Weffc ++ 将吐出: 警告:'struct S '有指针
..
我已经阅读了很多关于C ++的三维规则。许多人发誓。但是当规则被声明时,它几乎总是包括一个词“通常”,“可能”或“可能”,表示有例外。我没有看到很多讨论这些特殊情况可能是什么 - 三原则规则不成立的情况,或至少在坚持它不提供任何优势。 $ b 我认为在下面描述的情况下,需要一个显式定义的复制构造函数和复制赋值操作符,但默认(隐式生成)析构函数将正常工作。这里是我的情况: 我有两个类,A和B
..
我试图在C ++学习“大三”。我设法做“大三”非常简单的程序..但我不知道如何使用对象指针。以下是我的第一尝试。 我在写这篇文章时有疑问... 问题 这是实现默认构造函数的正确方法吗?我不知道我是否需要它。但是我在另一个线程中发现了有指针的拷贝构造函数,我需要在拷贝构造函数中复制地址之前为该指针分配空间。 如何分配指针变量复制构造函数?我在Copy Constructor中写的
..
因此,在观看这个精彩关于右值引用的讲座,我认为每个类都将受益于这样的“移动构造函数”, template MyClass(T& amp; other) 编辑 ,当然还有一个“移动赋值运算符”, template
..