我在一些遗留代码中偶然发现了这个错误:
class MyAPIHandler { private: int handle; public: void MyApiHandler() // default constructor { handle = 42; }; };
编译很好,没有警告 - 但行为不是我想要的,因为构造函数名称是拼写错误.这本身就会产生关于"函数不返回值"的警告,但我想我是在自动驾驶上并添加了一个"void"返回类型来"修复"这个.
现在,错误修复很容易,但我的问题是: -
我可以使用哪些技术来防止此类错误再次发生?
有些语言需要一个明确的"构造函数"关键字,这应该会使这个问题变得明显.单元测试,显然也应该抓住它.我还可以做些什么?
如果您始终在构造函数中使用初始化列表:
MyApiHandler() // default constructor : handle(42) { }
错误的构造函数错误甚至更不可能,无论如何它都是更好的风格.
编辑:感谢评论者提供的链接