Matthew Wilson(Imperfect c++的作者)和Scott Meyers(effective系列的作者)都是响当当的大人物,可是他们在 友元和成员的问题上似乎存在一些分歧。
“If you follow the practice of defining free-functions, as much as is possible, in terms of class methods, the need for friendship can be dramatically reduced.”(节选自《Imperfect C++》)
这段话反映出了这样的观点:尽量采用类的成员函数来取代自由函数。
但是,Meyers的一篇文章“How Non-Member Functions Improve Encapsulation”(如果你还没有看过,最好拜读一下,非常好的一篇文章阿^_^)的观点则恰恰相反,他认为非成员函数(即自由函数)更好地增强了封装性,所以Meyers更加倾向于使用自由函数。
面对这样的局面,作为读者的我感到很是欣慰啊(不是幸灾乐祸哦),因为这表明C++界还是“百花齐放,百家争鸣”的呀 :)