首页 > 代码库 > effective c++ 条款23 perfer nonmember nonfreind function to member function

effective c++ 条款23 perfer nonmember nonfreind function to member function

主要的理由还是封装。nonmember nonfreind function 不能访问类private 成员变量。

这个场景是有一个类提供了一些基本功能,比如

class WebBrowser{  public:        void clearCache();      void clearHistory();      void removeCookies();};

有时候我们需要执行上述三个函数。我们的做法是

void clearBrowser(WebBrowerser &wb){   wb.clearCache();   wb.clearHistory();   wb.romoveCookies();}

这样的好处是保持了WebBrowser的封装性。

//头文件webbrowser.h 针对webbrowser这个类本身。//webbrowser的核心技能namespace WebBrowerserStuff{class WebBrowser{  public:        void clearCache();      void clearHistory();      void removeCookies();};}//bookmark related functions//bookmark.hnamespace WebBrowerserStuff{   //bookmark related functions}//cookies related functions//cookies.hnamespace WebBrowerserStuff{   //cookies related functions}

这其实就像提供以一个不同方面的api list, 不用每次都include所有的h文件。

从封装的角度而言,有点疑问,就是为什么不提供一个二次封装的类,比如一个新类bookmark 来调用webbrowser的函数???