我最近考虑了一个流行的准则(Scott Meyers、Klaus Iglberger 等),它基本上更喜欢非成员(免费)函数而不是成员函数。我注意到我确实可以将我的大部分成员函数拉到外面,但我很难弄清楚什么时候我应该这样做。
这是一个简单的示例,一个以某种格式化方式将字符串向量(私有数据成员)打印到控制台的函数:
void list::print() const {
std::cout << "Printing list -> " << list_.size() << " entries.\n";
std::cout << "--- START OF LIST ---\n";
for (const auto &s : list_) {
std::cout << s.size() << " : " << s << '\n';
}
std::cout << "--- END OF LIST ---\n";
}
我发现在这样的简单情况下很难做出决定,在我看来,在短期内成员函数会更优雅一些,而自由函数可以随着程序变大而适应多个对象。有没有人有某种经验法则来帮助决定?我只是想太多了吗?谢谢。