2011-02-03 15 views
3

私のC++ arcanaについての知識は少し荒いです。のは、私は以下のクラスがあるとしましょう:C++:リファレンスのアドレス?

struct Bar { 
    int x; 
}; 

class Foo { 
    Bar& bar; 
public: 
    Bar* getRealAddress() { return &bar; } 
    Foo(Bar& _bar) : bar(_bar) {} 
}; 

Bar bar1; 
Foo foo1(bar1); 

foo1.getRealAddress()&bar1と同じ値を返すのだろうか?

答えて

11

foo1.getRealAddress()&bar1と同じ値を返しますか?

はい。

基本的に参照は、名前を除くすべての元の値です。エイリアスです。

+4

+1「エイリアス」という単語を使用しています。これは、最初に呼び出されたはずのものです。 –

+1

@PigBen、そうでしょうか?同様に、 "演算子[]はリストのi番目の要素のエイリアスを返します" 「参照先」は私にとってはより妥当な音です。 「エイリアス」は、実際の名前を持つ参照変数について話している限り、問題ありません。 –

+3

@ Sergey:その例では、単語の実際の辞書の定義を見ていると、私は参考が本当に意味をなさないと思う。私たちがこれを聞いて、C++で定着した後にそれを言っていることに慣れているからです。私たちが「別名別れ」という言葉を聞いて育ったのなら、それは私たちにとって自然なことだと思います。 –

2

はい、同じBarインスタンスなので、アドレスは同じになります。

関連する問題