2016-04-11 28 views
2

私は答えを探し回ってみましたが、これまでのところ運がありません。私の質問です - なぜ参照変数は、定義されるときに初期化する必要がありますか?それは技術的な理由なのでしょうか、それとも規格が許さないものなのでしょうか?定義時に参照変数を初期化する必要があるのはなぜですか?

int number = 42; 
int& numberRef; 
numberRef = number; 

以上が許可されていませんが、コードは以下の通りです::

例えば、このコードを取り、コンパイラが初期化されていないように初期化されていない参照変数を扱うことができないのはなぜ

int number = 42; 
int& numberRef = number; 

ポインタ?私がここで紛失しているものはありますか?

+1

参照がリバウンドすることができない。そこ構文、意味論的曖昧さだし、それを基準に割り当てること実際に参照されるオブジェクトに割り当てることを意味することを定義することによって解決されます、参照の初期化は、単にへの参照を結合することにより参照されるオブジェクト。 –

+0

初期化されていない参照がある場合は、なぜそれらを必要とするのでしょうか?私たちにはすでに指針があります。 – Drop

+1

@Drop、私たちのコードに ' - >'を書く必要を避けるためです。 – Chiel

答えて

8

参照が初期化されていない場合は、参照に割り当てようとする試みが常に参照対象に割り当てられるため、参照を初期化する方法はありません。

int& numberRef;  // pretend this is allowed 
numberRef = number; // copies number into some random memory location 
+0

ああ、私はそれをもう一度考え直していた。 –

関連する問題