我相信这是一个常见问题,但有些谷歌搜索没有返回匹配项,因此请在这里提问。
所以我有以下类(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/