2012-08-08 52 views
0

我有一個簡單的數據結構,通過kl,其中來自1l運行以Nk運行從1l索引的三角矩陣:作爲成員或非成員函數的算法?

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]; 
    } 
}; 

我也有幾種算法在此數據結構操作。他們都只能通過operator()訪問triangular_matrix

使這些算法的成員函數triangular_matrix代替使它們成爲非成員函數(在非全局命名空間中)有什麼優點和缺點?

+0

那麼,最小完整接口的主體會說他們應該是非成員函數,在這種情況下,我會同意。但在我看來,這些問題已經過分析,並沒有明確的答案。只要去你的直覺。 – jahhaj 2012-08-08 21:43:27

回答

1

在C++中,通常將所有不是必須是成員函數在非成員函數中。 Herb Sutter在一段時間後寫了一個nice article