9

私は C++ でリファレンスの概念を調べていますが、C++ 完全リファレンスのこのステートメントに少し混乱しています。

別の参照を参照することはできません

この場合、何が起こっているのでしょうか:

    int  var = 10;
    int& ref = var;
    int& r_ref = ref;
    r_ref++;
    cout << "var:" << var << "ref:" << ref << "r_ref:" << r_ref << endl;

私が得ている出力は次のとおりです。

var:11  ref:11  r_ref:11
4

3 に答える 3

15

少し紛らわしい表現です。彼らが意味することは、型を持つことができないということですint& &( のようなものがありますがint&&、それは別の型の参照であることに注意してください)。

コードでは、参照refは で示されるオブジェクトを参照していますvar。名前refvarは、同じオブジェクトを参照するために同じ意味で使用できます。そのint& r_ref = ref;ため、参照を参照するのではなく、同じオブジェクトを再度参照することになります。

于 2013-05-10T11:15:15.613 に答える
8

この場合、何が起こっているのでしょうか:

何が起こっているかというとr_ref、 によって参照されるオブジェクトへの別の参照を作成しているということrefですvar。したがって、var:refとへの 2 つの参照が作成されますr_ref

参照は単なるエイリアスであることに注意してください。オブジェクトにバインドされた後 (初期化時に何らかのオブジェクトにバインドする必要があり、後で再バインドすることはできません)、参照に対して行うすべての操作が行われます。参照されているオブジェクトで、参照が単なる代替名であるかのように。

このステートメントの意味:

別の参照を参照することはできません

参照自体をさらにエイリアスできるエンティティとして扱うことができないということです。参照はオブジェクトのエイリアスであり、参照に対して行うことはすべて(参照境界を含む!)、参照されているオブジェクトに対して行われます。

于 2013-05-10T11:15:42.947 に答える
1

int var = 10;変数を宣言しますvar。ここで、書き込み時にint& ref = var;への参照を定義しますvarrefの単なるエイリアスとして見ることができますvar。どこで使用しても、直接使用refするのと同じです。var

int& r_ref = ref;それが、 への別の参照を定義するだけの理由varです。

于 2013-05-10T11:17:30.587 に答える