2011-02-03 1 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.

Смежные вопросы