我相信这是一个常见问题,但有些谷歌搜索不会返回匹配项,因此请在这里询问。
所以我有以下课程:
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,但我忘记更新复制构造函数。
需要进行痛苦的调试才能找到不同步的位置。
有没有办法避免这样的问题,最好是在构建时?
是的,我可以编写单元测试来覆盖该复制构造函数,但是当我忘记更新复制构造函数时,很可能我也忘记了该单元测试。
打开所有编译器警告。您应该会收到有关任何未初始化的成员变量的警告。在 GCC 上,具体标志是-Weffc++。请参阅此 StackOverflow 帖子了解更多信息。
另外,尽可能在初始化列表中分配值,而不是在构造函数主体中分配值。
| 归档时间: |
|
| 查看次数: |
928 次 |
| 最近记录: |