未初始化的原始成员有一个常见的C++错误:
#include <iostream>
class A {
public:
int x;
};
int main() {
A a;
std::cout << a.x;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
a.x将是未初始化的.我明白为什么会发生这种情况,并希望找到解决此类错误的解决方案.我检查了gcc和cppcheck,他们没有报告这些成员.
编辑
用标志检查gcc-Wall -Wextra -Werror -pedantic -Wold-style-cast -Wconversion -Wsign-conversion -Wunreachable-code
检测到错误的第一个版本的gcc是5.1.g ++ - 4.9没有检测到它,clang ++ - 3.6也失败了.