Gre*_*g82 7 c++ non-member-functions c++11
为什么这些C++ 11头的新的功能<string>(stod,stof,stoull)所述的不成员函数string类?
是不是更符合C++ mystring.stod(...)而不是stod(mystring,...)?
Mat*_* M. 22
对许多人来说这是一个惊喜,但C++ 不是面向对象的语言(与Java或C#不同).
C++是一种多范式语言,因此尽可能地尝试使用最佳工具.在这种情况下,自由功能是正确的工具.
指南:首选非成员非友元函数到成员函数(来自Efficient C++,Item 23)
原因:成员函数或朋友函数可以访问类内部,而非成员非朋友函数则不能; 因此,使用非成员非友元函数会增加封装.
例外:当成员函数或朋友函数提供显着优势(例如性能)时,尽管有额外的耦合,但值得考虑.例如,即使std::find工作得很好,关联容器例如std::set提供一个std::set::find在O(log N)而不是O(N)中工作的成员函数.