我有下面的類:在類範圍外聲明的函數,但不是朋友。這個怎麼用?
class PhoneCall{
private:
string number;
public:
/*some code here */
};
現在,我宣佈一個函數(不朋友到PhoneCall),做一些具體的操作,並返回一個PhoneCall對象
PhoneCall callOperation()
另一個需要PhoneCall對象作爲參數
void userCall(PhoneCall obj)
我一直在期待它不工作,除非它被明確地聲明爲該類的朋友。
爲什麼和如何做到這些功能工作,即使他們不是朋友到PhoneCall類?
A friend function of a class is defined outside that class' scope but it has the right to access all private and protected members of the class http://www.tutorialspoint.com/cplusplus/cpp_friend_functions.htm
在您看來:PhoneCall的哪些私有或受保護的成員會執行'userCall()'要求? – fukanchik
如果不是'PhoneCall',而是使用'std :: string'類型聲明這些函數,那麼您是否需要函數與'std :: string'成爲朋友? – wil93
'一個類的朋友函數在該類的範圍之外定義,但它有權訪問該類的所有私有和受保護成員。它並沒有說非友元函數不能返回或作爲該類的一個對象的參數。 – 101010