可能重复:
std::string x(x);
class A {};
int main() {
A a(a);
}
这编译。
gcc (GCC) 4.7.2 20120921 (红帽 4.7.2-2)
g++ -o main main.cpp -Wall -w -ansi
我没有收到任何警告。
为什么这似乎是有效的 C++?
标准中的任何地方都提到了这一点吗?
是否有可以为 gcc 报告此问题的警告标志?
当类有成员数据时,数据最终是随机的。
例子:
#include <iostream>
class A {
public:
int i;
A() : i{6} {}
};
int main() {
A a(a);
std::cout << a.i << '\n';
}
输出:-482728464
这里发生了什么?另外,我怎样才能防止自己不小心这样做呢?- 是否有可能使其成为编译器错误?