我搜索了很多关于我无法理解的内容,但我真的没有找到正确的答案来解决我对“朋友”和非成员函数的小困境。所以,这里...
这是一个示例代码,其模式与我看到的相应代码相似:
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;
}
为什么我们使用“friend”关键字标识的非成员类函数与不使用的函数相似?为什么第一个函数(“friend” ed函数)不能通过知道“friend”函数或类可以访问宿主类的私有成员来访问“bar”变量?