2008-03-19

http://anond.hatelabo.jp/20080319183910

参照型にする必要はないけど関数コンパイラによって自動でinline展開される可能性があると参照型か値型かが曖昧無意味なものになるし、inline展開されないとしても値型なら最適化で値渡しに、値型でないならそのまま参照型としてコンパイラ最適化してくれるから、型の実装が組み込み値型かそれを模倣するクラスかが決まっていない環境ならできればconst参照渡しの方が好ましい。

テンプレートクラス特殊化の作業などをしているとこのケースに遭遇しやすい。保守性を重視してできるだけコード内容の一貫性を保って特殊化されたクラスを書くか、コンパイラでもできる最適化を気にしながら特殊化されたクラスごとに別のコードを書き分けるかの違い。

記事への反応 -
  • C++で値同士の論理積、論理和などの論理演算は最適化でビット演算になるくせに常用しても「可読性を考慮して」という理由から怒られたりはしない。 でも関数の引数型が組み込み型で...

    • 関数の引数型が組み込み型であった場合にそれをconstな参照型にすると というところがよくわからないのだけど、 void foo(const int &bar) ということ?このばあい参照型にする必要があ...

      • 参照型にする必要はないけど関数がコンパイラによって自動でinline展開される可能性があると参照型か値型かが曖昧で無意味なものになるし、inline展開されないとしても値型なら最適化で...

    • 値渡しでconstにしとけばみんな幸せ…とか言ってみる。 間違ったこと言っていたら教えてあげればいいのに。 死ねとか言っちゃ駄目だよ。

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん