-1

次の点を考慮してください。

int someA = 1;
int someB = 2;

int &a = someA;
int &b = someB;

a = b;   // what happens here?

ここで参照で何が起こっていますか?ちょっと興味があるんだけど。

4

3 に答える 3

6

2 つの参照変数が互いに等しいこと自体はエラーではありません。混乱するかもしれません。ただし、コードが行うことは、別の参照への参照を設定することではなく、_Afromの値1をに変更すること2です_B

[初期化された場所] でのみ参照を設定できます。初期化されると、元の変数のエイリアスになります。

あなたはこれを行うことができます:

int &a = _A;
int &b = _A;

a = b;  

はすでに値を持っている に値1を格納します。_A1

于 2013-02-06T14:06:46.860 に答える
3

関数の外にステートメントを持つことはできません。

a = b;   //compile error?

これはステートメントなので、関数内にある必要があります。

int _A = 1;
int _B = 2;

int &a = _A;
int &b = _B;

int main()
{
   a = b;   //compile error? No. Now it compiles.

   // As 'a' and 'b' are references.
   // This means they are just another name for an already existing variable
   // ie they are alias
   //
   // It means that it is equivalent to using the original values.
   //
   // Thus it is equivalent too:
   _A = _B;
}

これでコンパイルされます。

于 2013-02-06T14:07:43.550 に答える
2

ここにエラーはありませんが、あなたが混乱していることを知っているかもしれません。参照は再割り当てされませんが、参照している値は再割り当てされます。

したがって、参照はエイリアスであるため、a = b;本質的にこれを言っていることになります。_A = _B

ポインタのように参照を再割り当てすることはできません。

参照が null になることもありません。

于 2013-02-06T14:06:54.060 に答える