面向对象守则要求数据应该尽可能封装,愈多函数可访问它,数据的封装性就愈低,故成员函数封装性差。
在很多方面,非成员做法比成员做法好。
- 通常,可以令成员函数为一个static函数,或让成员函数位于类同级的namespace下。
如:
namespace WebBrowserStuff {
class WebBrowser{...};
void clearBrowser(WebBrowser& wb);
};
- 将所有便利函数放在多个头文件内但隶属同一个命名空间,意味客户可以轻松扩展这一组便利函数,降低了编译依存性,这正是STL的做法