C++构造函数编码错误

Rod*_*ddy 2 c++ constructor

我在一些遗留代码中偶然发现了这个错误:

class MyAPIHandler
{
    private:
     int handle;
    public:
    void MyApiHandler()  // default constructor
    {
        handle = 42;
    };
};
Run Code Online (Sandbox Code Playgroud)

编译很好,没有警告 - 但行为不是我想要的,因为构造函数名称是拼写错误.这本身就会产生关于"函数不返回值"的警告,但我想我是在自动驾驶上并添加了一个"void"返回类型来"修复"这个.

现在,错误修复很容易,但我的问题是: -

我可以使用哪些技术来防止此类错误再次发生?

有些语言需要一个明确的"构造函数"关键字,这应该会使这个问题变得明显.单元测试,显然也应该抓住它.我还可以做些什么?

Jam*_*kin 19

如果您始终在构造函数中使用初始化列表:

MyApiHandler()  // default constructor
: handle(42)
{
}
Run Code Online (Sandbox Code Playgroud)

错误的构造函数错误甚至更不可能,无论如何它都是更好的风格.

编辑:感谢评论者提供的链接