CL.ASSIGN.VOID
赋值运算符 = 中返回的 void
这是一个类级别 (CL) 检查器,可就赋值运算符的参数类型,告知您潜在的限制或不明智的设计选择。类级别检查器会根据 Scott Meyer 的高效 C++ 规则类构造来生成建议。
CL.ASSIGN.VOID 检查器可查找包含赋值运算符的类,这些运算符返回 void。使用这种返回类型时,将无法表达某些语言结构。无论这些语言结构是否需要,或是否具有争议,遵循下面的基本模板,以在无论使用何种类型时均能保证语言的一致性:
复制
class MyClass {
public:
MyClass& operator=(const MyClass&);
};
漏洞与风险
此设计选择不存在任何漏洞,但是有风险,即不熟悉的程序员将尝试使用“应该”正常工作但是不兼容的语言结构,并且还会遇到意义甚少或毫无意义的编译器警告(假定 C++ 编译器输出具有通常的复杂性)。
漏洞代码示例
复制
class C{
//...
public:
C(int);
void operator=(const C&);
//...
};
在此示例中,Klocwork 在第 5 行查找到了 CL.ASSIGN.VOID 错误。Klocwork 警告允许重新评估相应代码,避免出现设计限制。