関数がパラメーターを処理する必要があるのはその値を確認することだけである場合、そのパラメーターを常に定数参照で渡す必要はありませんか?
私の同僚は、小さい型では問題ないと言いましたが、私は同意しません。
これを行う利点はありますか:
void function(char const& ch){ //<- const ref
if (ch == 'a'){
DoSomething(ch);
}
return;
}
これについて:
void function(char ch){ //<- value
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;
}
しかし、これが常に当てはまるかどうかはわかりません。
追加のオーバーヘッドが発生せず、自己文書化されているため、私は正しいと思います。
しかし、私の推論と仮定が正しいかどうかコミュニティに尋ねたいですか?