2
定数を定義するのがベストプラクティスですか?ここで小さな例がある:明らかにすべての定数をconst参照として定義しますか?
#include <vector>
struct mystruct {
std::vector<double> data;
mystruct() : data(100000000,0) {};
};
int main(){
mystruct A;
int answer = 42;
const mystruct& use_struct_option_1 = A; // quick
const mystruct use_struct_option_2 = A; // expensive
const int& use_answer_option_1 = answer; // good practice?
const int use_answer_option_2 = answer; // ubiquitous
}
、use_struct_option_1
を初期化する方法が迅速であるのに対し、mystruct
のコピーコンストラクタが呼び出されるので、その方法は高価であるuse_struct_option_2
を初期化します。 しかし、整数などの型にも同じことが当てはまりますか?私は
const int use_answer_option_2 = answer;
は、はるかに一般的なものであることが好ましい
const int& use_answer_option_1 = answer;
よりであることを伝えることができますでロックされたコードから
?
'int'の場合、オプション1は定数値を生成しません。それは 'use_answer_option_1'という名前では変更できない値ですが、誰でも' answer = 21; 'を使って参照が参照するものを変更することができます。それがあなたが望むものかどうかを判断しなければなりません。構造と同様に;あなたはあなたの「一定の参照」によって参照されるデータを変更する人に気をつけますか?それが重要であれば、データスペースに800 MiBを追加したとしてもコピーが必要です。それが重要でない場合、非定数データへの定数参照はOKです。 –