重複の可能性:
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
何が起きてる?また、誤ってこれを行うのを防ぐにはどうすればよいですか? - コンパイル エラーにすることはできますか?