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_非 - 成员。 –