4

関数から参照を返す必要がある理由についての質問。

次のコードは、9 行目と 16 行目に置き換えるint&と、まったく同じように動作intします。

私のコード例では、参照と値を返すことは重要ではありませんか? どのような例で問題になり始めますか?

私の考えでは、ローカル変数は呼び出し元のスコープ外になるため、関数のローカル変数の参照を返すことはできません。したがって、呼び出し元が(スコープ内で)見ることができる変数の参照を返すことだけが理にかなっていますが、関数の呼び出し元が変数を見ることができる場合、それを返す必要はありません(?)(または、これは戻りますコードをきちんと整頓するために行われますか?)

関連リンク:参照を返すことは良い考えですか?

#include <iostream>
using namespace std;

class myClass{
private:
    int val;
public:
    myClass(int);
    int& GetVal();
};

myClass::myClass(int x){
    val = x;
}

int& myClass::GetVal(){
    return val;
}

int main()
{
    myClass myObj(666);
    cout << myObj.GetVal() << endl;
    system("pause");
    return 0;
}
4

3 に答える 3

6

違いは、参照を返すときに、次の結果に代入できることですGetVal()

myObj.GetVal() = 42;

返された参照を保持して、myObj.val後で変更するために使用することもできます。

値でGetVal()返さvalれる場合、これは不可能です。

これのいずれかが望ましいか、または実際に優れた設計であるかは、まったく別の問題です。

あなたの例は、リンクされた質問のコードとは大きく異なることに注意してください。そのコードは無効な参照を返し、明らかに悪い考えです。

于 2013-04-06T06:38:53.563 に答える