我在一些遗留代码中偶然发现了这个错误:
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)
错误的构造函数错误甚至更不可能,无论如何它都是更好的风格.
编辑:感谢评论者提供的链接
| 归档时间: |
|
| 查看次数: |
670 次 |
| 最近记录: |