本番環境でのクラッシュのデバッグに苦労しました。セマンティクスについてここの人々に確認したかっただけです。次のようなクラスがあります...
class Test {
public:
Test()
{
// members initialized ...
m_str = m_str;
}
~Test() {}
private:
// other members ...
std::string m_str;
};
誰かが初期化を変更して、コードセマンティクス内で合理的に正しいctor初期化リストを使用しました。初期化の順序とその初期値は、とりわけ正しいものです。したがって、クラスは次のようになります...
class Test {
public:
Test()
: /*other inits ,,, */ m_str(m_str)
{
}
~Test() {}
private:
// other members ...
std::string m_str;
};
しかし、コードが突然クラッシュし始めました!このコードの一部に初期化の長いリストを分離しましたm_str(m_str)
。リンクテキストで確認しました。
クラッシュする必要がありますか?規格はこれについて何と言っていますか?(それは未定義の動作ですか?)