すべての関数がパラメータで行う必要がある場合は、その値を参照してください。パラメータを渡すエチケット(C++)const&vs値
私の同僚は、小さなタイプでは問題ではないと述べましたが、私は同意しません。このオーバー
void function(char const& ch){ //<- const ref
if (ch == 'a'){
DoSomething(ch);
}
return;
}
:
#include <iostream>
#include <cstdlib>
int main(){
char ch;
char& chref = ch;
std::cout << sizeof(ch) << std::endl; //1
std::cout << sizeof(chref) << std::endl; //1
return EXIT_SUCCESS;
}
しかし、私は実行します。
void function(char ch){ //<- value
if (ch == 'a'){
DoSomething(ch);
}
return;
}
は、彼らが私に同じ大きさに見える
だから、これを行うにはどんな利点がありますこれが常に正しいかどうかは分かりません。
追加のオーバーヘッドが発生せず、それ自体が文書化されているので、私は正しいと思います。
しかし、私の推論と仮定が正しいかどうかコミュニティに尋ねたいと思いますか?
あなたのデモコードは、 'sizeof(ch)'が 'sizeof(ch)'と同じであることを示しているようです。 –
これらのうちのどれかのために 'sizeof(chref)'を指定したとしても、同じサイズになります。しかし、これは無関係です。なぜなら、 'sizeof(chref)'を実行すると、実際にはchのサイズを伝えているからです。参照を初期化すると、参照が実際に行われたかのようにすべての操作が動作します。しかし、それは舞台裏で起こっているかもしれないコンパイラの魔法について何も教えてくれません。 –
@JonathanLeffler固定 –