【初心者歓迎】C/C++室 Ver.66【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0051デフォルトの名無しさん
2009/05/31(日) 13:57:17以下のようなメンバ関数があったとします。
SStruct GetReturnStruct() const;
INT32 GetReturnINT() const;
これらの関数を以下のように使用します。
1. SStruct sStruct = GetReturnStruct();
2. INT32 nINT = GetReturnINT();
3. SStruct& sTestStruct = GetReturnStruct();
4. INT32& nTestINT = GetReturnINT();
5. const SStruct& c_nTestStruct = GetReturnStruct();
6. const INT32& c_nTestINT = GetReturnINT();
実行環境はVisualStudio2005です。
1と2は普通にコンパイルして実行できるのですが、
3と4の場合、3はコンパイルが通り、4はエラーメッセージ
「'INT32' から 'INT32 &' に変換できません。」
が出てしまいました。
また、5と6ではコンパイルが通りました。
1から6までは内容的には同じ値が入ると思うのですが、
内部的な処理はそれぞれどのようになされているのでしょうか?
構造体などを使うときはなるべく参照かポインタを引数にしたほうがよい
と聞いたのですが、参照の使い方がまだ今ひとつ理解できていません。
どのような場合に参照渡しをしたほうがよいのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています