【发布时间】:2011-09-21 21:41:40
【问题描述】:
这个问题的标题取自 Scott Meyers 在 Effective C++ 3rd Edition 中第 #23 项的标题。他使用以下代码:
class WebBrowser {
public:
void clearCache();
void clearHistory();
void removeCookies();
//This is the function in question.
void clearEverything();
};
//Alternative non-member implementation of clearEverything() member function.
void clearBrowser(WebBrowser& wb) {
wb.clearCache();
wb.clearHistory();
wb.removeCookies();
};
虽然声明下面的替代非成员非朋友函数比成员函数 clearEverything() 更适合封装。我想部分想法是,如果提供访问权限的成员函数较少,访问 WebBrowser 的内部成员数据的方法就会减少。
如果你接受这一点,并将这种函数作为外部的、非友元函数,你会把它们放在哪里?这些函数仍然与类紧密耦合,但它们将不再是类的一部分。将它们放在类的同一个 CPP 文件中、库中的另一个文件中是一种好习惯吗?
我主要来自 C# 背景,而且我从来没有摆脱对所有东西都成为课堂一部分的渴望,所以这让我有点困惑(虽然这听起来很傻)。
【问题讨论】:
标签: c++