2013-01-31 22 views
2

正如我知道在其壽命期間的參考可以指僅一個對象.. 但是,代碼編譯波紋管正確..雖然我已經改變了稱爲對象..輸出是:1。 它如何正確編譯?引用可以在其生命週期中引用多個對象嗎?

由於 使然

class A{ 
private: 
int a; 
public: 
A(int a):a(a){} 
virtual ~A(){} 
virtual void f()const {cout<<a<<endl;} 
}; 
class B: public A{ 
private: 
int b; 
public: 
B(int Ina,int Inb):A(Ina),b(Inb){} 
virtual void f()const {cout<<b<<endl;} 
}; 

int main(){ 
    B b(1,2); 
    A a(5); 
    A& ref=a; 
    ref=b; 
    ref.f(); 
    return 0; 
} 

回答

1

的引用其整個壽命期間是指只有一個referrant。
您的代碼所做的是將新值賦予原始打點符號。

+0

右...感謝..得到它:-) – Ohad

0

你的主要功能是等效於這樣的:

B b(1,2); 
A a(5); 
a = b; 
a.f(); 

分配到基準等效於分配給原始對象。

3

想一想正確的方法是參考它引用的對象。因此,如果你這樣做:

A& ref = a; 
ref = b; 

由於refa,你正在做的是:

a = b; 
相關問題