c++ - 有什么技巧可以使复制构造函数与类属性保持同步吗?

标签 c++

我相信这是一个常见问题,但有些谷歌搜索没有返回匹配项,因此请在这里提问。

所以我有以下类(class):

class A {
  public:
    A(const A &rhs) { m_a = rhs.m_a; }

   private:
      int m_a;
};

一切都很酷,直到一段时间后,可能是一年后,我将一个新属性 m_b 添加到 class A,但我忘记更新复制构造函数.

找到不同步的位置需要进行痛苦的调试。

是否有避免此类问题的技巧,最好是在构建时?

是的,我可以编写单元测试来覆盖该复制构造函数,但是当我忘记更新复制构造函数时,很可能我也忘记了该单元测试。

最佳答案

打开所有编译器警告。您应该希望收到有关任何未初始化成员变量的警告。在 GCC 上,这个的特定标志是 -Weffc++。参见 this StackOverflow post了解更多信息。

此外,尽可能在初始化列表而不是构造函数体中分配您的值。

关于c++ - 有什么技巧可以使复制构造函数与类属性保持同步吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46758596/

相关文章:

c++ - 查询区分 0 值的位图

c++ - 连续 cin 的问题

c++ - 使用字符串映射 vector C++ 时可能存在内存泄漏

c++删除两个指针引用的对象

C++ 字符数组给出奇怪的输出

c++ - 为什么在取消引用结构后结构成员未初始化

c++ - 在C++中调整pdf文件内容

c++ - 我该怎么做——像一个人一样快速地修改 2 的幂++ 2 的幂?

C++ moSTLy 冗余默认和参数化构造函数违反 DRY

c++ - boost unordered_map 反向 foreach