我有一个简单的数据结构,一个由kl索引的三角矩阵,其中l1N,而k1l

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()

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

最佳答案

在C ++中,通常将不需要成为成员函数的所有内容都放入非成员函数中。赫伯·萨特(Herb Sutter)不久前写了一个nice article

关于c++ - 算法是成员函数还是非成员函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11873598/

10-11 00:57