2013-05-14 60 views
1

的創建對象的&同時假設我有一個程序利用結構

struct node 
{ 
    int bot,el; 
    char name[16]; 
}; 

int main() 
{ 
    stack <node> S; 
    node&b = S.top; 
    return 0; 
} 

是什麼在node&b&是什麼意思?

+1

這意味着'b'是[引用變量](http://www.cprogramming.com/tutorial/references.html )的節點類型。 – Dukeling 2013-05-14 11:12:05

+0

[閱讀有關參考資料](http://www.parashift.com/c++-faq/references.html)。 – BoBTFish 2013-05-14 11:12:11

回答

1

首先,你應該解決調用top

node &b = S.top() ; 

所以在這一點b現在的別名在堆棧頂部的元素,所以你做出b將反映的任何變化堆棧中的頂層元素也是如此。參考標準容器中的元素可以是dangerous,因此您瞭解其含義。此代碼演示原則,儘可能接近您的示例代碼儘可能:

int main() 
{ 
    std::stack <node> S; 

    node n1 ; 

    n1.bot = 10 ; 
    n1.el = 11 ; 

    S.push(n1) ; 

    node a = S.top() ; // a is a copy of top() and changes to a won't be reflected 
    node &b = S.top() ; // b is now an alias to top() and changes will be reflected 

    a.bot = 30 ; 
    std::cout << S.top().bot << std::endl ; 
    b.bot = 20 ; 
    std::cout << S.top().bot << std::endl ; 

    return 0; 
}