C ++関数の戻り値 - &参照型、非参照型を返します。

関数の戻り値は、次のような状況に分かれています。

1、メイン関数の戻り値:

他の戻り値のほとんどが失敗したことを示し、0は、プログラムが正常に実行されたことを示し返し、メイン関数の戻り値は、ステータスインジケータとみなすことができ、値を返さない主な機能を許可すると終了することができます。

2、非参照型のリターン:

  • 戻り値の型は、一時的なオブジェクトに関数の戻り値をコピーする関数呼び出しの場所で参照されていない場合、関数の戻り値は、関数呼び出し(一時オブジェクト)で作成した一時オブジェクトを初期化するために使用されます。
  • 式を評価するときは、計算結果を格納する場所が必要な場合、及び、コンパイラは一時オブジェクトであるオブジェクト名を作成しません。通常は一時的な用語C ++プログラマは、一時的なオブジェクトを置換します。
  • 関数の値は、初期化パラメータ引数の一時的なオブジェクトおよびメソッドが同じである返す初期化します。
  • 関数は、非参照型を返す場合、戻り値は、ローカルオブジェクトであってもよく、また、発現を評価した結果であってもよいです。

図3に示すように、参照型を返します。

  • 関数は、参照型を返す場合、戻り値はコピーされない、逆に、オブジェクト自体を返します。
  • ローカルオブジェクトへの参照を返してはいけません!ローカルオブジェクトポインタへのポインタを返すしないでください!

  関数が終了すると、ローカルオブジェクトに割り当てられたメモリ領域を解放します。この場合、ローカルオブジェクトへの参照は、メモリの不確実性を指すようになります!関数が終了したときに、ローカルオブジェクトが解放され、同じである、返されたポインタはポインタオブジェクトを依存する存在長くなるローカルオブジェクトを指すポインタを返します。

  • 参照を返す場合は、参照またはポインタ本実施形態で返される必要があるパラメータで、関数パラメータを必要とされます。

図4は、const型を返します。

  直接変数の寿命への戻り値がまだ終わっていないで、そのため、関数(又は呼び出された関数の結果)は、任意の動作自体の戻り値は、実際には、const型の導入である変数の動作であります意味のリターン。関数の戻り値は、すぐに変更することができないことを意味constキーワードを使用している場合!次のコードは、コンパイラができない、この機能が許可されていないため、直ちに(++実行変数zの操作に対応する)操作の戻り値が++、からです。CONSTは、再コンパイルを削除した場合、それは= 7結果zを形成し、印刷することによって得ることができます。

含む<入出力ストリーム> 
含む <cstdlib>
 のconst  int型&ABC(int型int型 B、INT C、INT結果)を
{ 
    結果 = A + B + C。
    戻り値の結果; 
} 
int型のmain()
{ 
   int型 A = 1INT B = 2INT C = 3 int型のZ; 
   ABC(A、B、C、Z) ++;  // 間違っ:const参照の返却 
   はstd :: coutのを<< "Z = " << Z << はstd :: ENDL;
    戻り 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/mathyk/p/11527502.html