3
我用C學習有關friend
關鍵字++,我很奇怪,爲什麼有一個非成員函數,並使用friend
關鍵字時,你可以讓非成員函數的成員函數?我希望我明確提出了我的問題,謝謝!爲什麼要使用非成員函數?
我用C學習有關friend
關鍵字++,我很奇怪,爲什麼有一個非成員函數,並使用friend
關鍵字時,你可以讓非成員函數的成員函數?我希望我明確提出了我的問題,謝謝!爲什麼要使用非成員函數?
因爲有時候你需要創建一個重載的操作在您的類類型是在右手邊。這必須作爲一項免費功能來實施。經典示例:
ostream& operator<<(ostream& str, my_type const& my)
{
// print out `my` into `str`---requires `friend` if using
// private members of `my_type`
return str;
}
爲了說清楚,成員函數總是有自己的對象類型作爲第一個參數,但對於cout <<
我能想到的一個常見示例是重載'ostream'運算符。 – 2013-10-08 22:45:32
http://www.gotw.ca/gotw/084.htm –
@JerryCoffin:這是一個很好的參考,但公平地說,Sutter主要是在談論非朋友不成員,而問題是關於_friend_非 - 成員。 –