我覺得這個問題已經足夠基本,可以在某處找到,但我似乎無法找到答案。聲明對象和賦值運算符的引用
假設我有這樣的代碼:
//class member function
std::map< std::string, std::string > myMap;
const std::map< std::string, std::string >& bar()
{
return myMap;
}
void myFunc(std::map< std::string, std::string >& foo1)
{
foo1 = bar();
std::map< std::string, std::string >& foo2 = bar();
}
我的理解是,如果我開始使用foo2的,因爲foo2的是同一個實例的引用作爲什麼吧()返回時,任何事情我foo2的辦會體現在myMap中。但是foo1呢? foo1是否獲取myMap的副本,或者它是否指向與bar()返回的實例相同的實例? C++標準庫說std :: map的賦值操作符會將元素複製過來,但這是否意味着賦值操作符在foo2的聲明中沒有被真正調用?
謝謝!
+1謝謝,我自己學到了一些新東西。我只是做了一個測試,我確實是100%錯誤,你是對的= - ) – flumpb
好了!謝謝,我真正需要知道的是賦值運算符在foo1中調用,並且不在foo2中調用。很好的解釋,謝謝! – bhh1988
@Luc如果可能,你能否理解爲什麼通常不使用引用變量?我對它們是什麼有了更好的理解(感謝你的回答),但似乎編程人員普遍贊成對它的指示。它是多餘的嗎?範圍有限? –