3

ポインタが別の変数を指すようにしたい場合は、変数のアドレスに&を付けて指定します。

int foo = 10;
int *bar = &foo;

ここで、上記と同じロジックに従い、代わりに参照型を作成するとします。

int foo = 10;
int &bar = &foo; 

これはうまくいくはずだと思いますが、うまくいきません。なんで?

4

3 に答える 3

4

構文は

int &bar = foo;

ウィキペディアを参照してください。

于 2012-07-20T22:46:59.273 に答える
3

ポインタと参照は同じものではないからです。参照は単に「の別名」または「エイリアス」を意味すると考えることができます。

言い換えれば、あなたの例でbarは別の名前です。fooその場合、の別の名前にint &bar = foo;なりたい場合は、 のアドレスをに割り当てたくありません。ただし、ポインターはそれが指しているオブジェクトのアドレスを格納するため、ポインターの場合、アドレスを取得してポインターに割り当てるには、アドレス取得演算子が必要です。barfoofoobarfoobar

于 2012-07-20T22:58:49.223 に答える
2

参照は、参照と同じ型で初期化する必要があるため、機能しません。この場合:

int foo = 10;
int &bar = foo;

この方法で初期化しようとすると、次のようになります。

int &bar = &foo;

intへのポインタを使用してint参照を初期化しようとしています。タイプが一致しません。

コンパイラーは内部でポインターとして実装する場合がありますが、参照はポインターと同じではありません。参照は基本的に「私がバーについて言及するとき、私は本当にfooについて話している」と言っています。

于 2012-07-20T22:49:59.363 に答える