算法作为成员函数还是非成员函数?

时间:2012-08-08 21:40:10

标签: c++ encapsulation

我有一个简单的数据结构,一个由kl索引的三角矩阵,其中l1N和{{1}从k1

运行
l

我还有几种算法在这个数据结构上运行。他们所有人只能通过template<int N> class triangular_matrix { std::vector<int> elem; public: int& operator()(int k, int l) { return elem[(N * (N + 1) - l * (l + 1)) / 2 + k - 1]; } }; 访问triangular_matrix

使这些算法成为operator()成员函数的优点和缺点是什么,而不是使它们成为非成员函数(在非全局命名空间中)?

1 个答案:

答案 0 :(得分:1)

在C ++中,将非必须的所有内容放在非成员函数中是很常见的。 Herb Sutter不久前写了一篇nice article