私のクラスでは、そのようなフィールドを使用していました:
private:
bool firstSeqNumReceived;
true
しばらくの間、すべてが正常に機能していましたが、1 つのコミットの後、フィールドがデフォルトになっていることがわかりました。驚くべきことに、フィールドはfalse
デフォルトで初期化されず、代わりに割り当てられた値は実装に依存します (詳細については、C++ クラス メンバーのデフォルト値は何ですかを参照してください)。
なぜコンパイラがコンパイル時エラーを生成せず、初期化を追加する必要があるのだろうか? 「実装依存」のデフォルト値が必要なのは誰ですか?ユースケースはありますか? この場合、コンパイル時エラーが発生しないのはなぜですか?