我搜索了很多關於我無法理解的內容,但是我對於「朋友」和非成員功能存在的一些困難並沒有找到合適的答案。所以,在這裏它是...朋友和非成員功能困境
這是一個示例代碼,其模式類似於相應的代碼,我看到:
struct SampleClass
{
friend void foo1(SampleClass &rhs);
void foo2();
private:
int bar;
};
void foo1(SampleClass& rhs)
{
rhs.foo2();
}
void foo3(SampleClass& rhs)
{
rhs.foo2();
}
int main()
{
SampleClass samp;
foo1(samp); //friend function
foo3(samp); //not a friend function but has the same effect
return 0;
}
爲什麼我們如何使用它是確定的「朋友非成員函數類「關鍵字是不是類似的功能?爲什麼不知道「朋友」函數或類可以訪問主機類的私有成員,第一個函數(「朋友」函數)訪問「bar」變量?
我無法理解你的意思。 'foo2'顯然是公開的。嘗試輸入'rhs.bar = 5;'而不是'rhs.foo2();'然後你會看到不同之處。 – PeterT
請包括您感到困惑的代碼。因爲這裏似乎沒有問題。 ('bar',唯一的'私人'的東西,永遠不會被訪問。) – Potatoswatter