彼の著書「プログラミング、原則とC++を使った実践」では、Bjarne Stroustrupがメンバ初期化リストを314-316ページ(§9.4.4)に導入しました。彼は次の例を使用しています:315ページメンバ初期化子リストを使用すると初期化が少し速くなりますか?
// Simple Date (year, month, day)
class Date
{
public:
Date(int yy, int mm, int dd): y{yy}, m{mm}, d{dd}
{
//...
}
private:
int y, m, d;
};
を彼は言う:
我々が書かれている可能性:
をしかし、我々は、原理的には最初のデフォルトメンバーを初期化しているだろうし、次にそれらに値を割り当てます。Date::Date(int yy, int mm, int dd) // constructor { y = yy; m = mm; d = dd; }
したがって、私はメンバー初期化子リストを使用すると、コードが若干速くなりますと結論づけることができますか?もちろん、現代のPCで誰も気付かないだろう。しかし、私は組み込み開発のためにC++を使うつもりです。
編集:
さらに質問を指定します。 「わずかに速い」とは、実際には「CPUサイクルの低減」を意味します。
私は、この特定の例の潜在的な効率の上昇が何にも近くないことに同意します。しかし、はるかに大きなクラスや構造体に対しては、マイクロコントローラ上で目立つようになるかもしれません。次のように
'int's?違いはありません。重いクラスで試してみてください。 – DeiDei
これは、副作用がなければすべて最適化されています。 –
メンバーをconstにする。どちらの方法が現在実行可能ですか?これらの決定にはパフォーマンス以上のものがあります。メンバー初期化子リストを常にデフォルトとして使用します。 – StoryTeller