初期化リストの利点とその効率
初期化リストは、組み込み型ではないクラス メンバーの初期化が効率的であることで知られています。この手法には、従来の初期化方法に比べていくつかの利点があります。
提供された例、Fred::Fred(): x_(whatever) {} では、コンパイラーは式の結果をメンバー変数 x_ 内に直接構築します。不必要なコピーやオブジェクトの構築を回避します。これにより、別のアプローチである Fred::Fred() { x_ = anything; における一時オブジェクトの作成と破棄に伴うパフォーマンスの低下が解消されます。 }.
ただし、あなたが言及した特定のケースでは、次のクラスを使用します:
class MyClass { public: MyClass(string n):name(n) { } private: string name; };
代替クラスと比較して:
class MyClass { public: MyClass(string n) { name=n; } private: string name; };
大幅な効率はありません初期化リストの使用が向上します。この場合、2 番目のバージョンは文字列クラスのデフォルトのコンストラクターを呼び出してから、そのコピー代入演算子を呼び出します。これにより、最初のバージョンと比較してわずかな効率の低下が生じる可能性があります。
一貫して使用することをお勧めします。目に見えるパフォーマンス上の利点がない場合でも、コードの正確性を確保し、読みやすさを維持するために推奨される初期化リストのアプローチ。
以上がC で初期化リストを使用するとパフォーマンスが大幅に向上するのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。