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

my_*_*ion 6 c++

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

所以我有以下课程:

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

   private:
      int m_a;
};
Run Code Online (Sandbox Code Playgroud)

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

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

有没有办法避免这样的问题,最好是在构建时?

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

Gra*_*her 1

打开所有编译器警告。您应该会收到有关任何未初始化的成员变量的警告。在 GCC 上,具体标志是-Weffc++。请参阅此 StackOverflow 帖子了解更多信息。

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