C++constリファレンスを使用してパラメータを渡す
998 ワード
const&intのような形式はC++の定数参照であり,関数パラメータパラメータリストではconstの参照がよく用いられる.
参照の役割は、値の伝達を防止することであり、コード効率を向上させることができ、この設計ポリシーは関数の実行をより速くすることができ、constは関数パラメータの誤修正を防止する値である.1つの関数では、関数の転送時の値の転送は以前から知られていました.つまり、関数呼び出し時に、パラメータにメモリを再割り当てし、実パラメータの値をコピーします.たとえば、次のようにします.
最近、関数テンプレートを見ていると
参照の役割は、値の伝達を防止することであり、コード効率を向上させることができ、この設計ポリシーは関数の実行をより速くすることができ、constは関数パラメータの誤修正を防止する値である.1つの関数では、関数の転送時の値の転送は以前から知られていました.つまり、関数呼び出し時に、パラメータにメモリを再割り当てし、実パラメータの値をコピーします.たとえば、次のようにします.
void func(int a,int b)
{
//...
}
int main()
{
int aa=3;
int bb=4;
func(aa,bb);
return 0;
}
func()
関数では,メモリが再割り当てされ,実パラメータaa bb
の値がそれぞれ格納されることが知られていたが,この値伝達のコピーは,パラメータが複雑な構造体である場合,記憶を大幅に浪費する.したがってconstリファレンスを使用すると、パラメータが変更されないことを保証した上で、データの値がコピーを伝達することを防止することができる.最近、関数テンプレートを見ていると
《C++ Primer》( )581
は、汎用コードを記述する2つの重要な原則について言及しています.その1つは、 const
が与えた解釈が明らかです.関数パラメータをconstの参照に設定することで、コピーできないクラスに使用できることを保証しています.もちろん、ほとんどのタイプはコピーが許可されていますが、コピーが許可されていないクラスタイプも存在します.