確定這樣的IM不知道如果我的理解是這樣 相關函子但問題是: 讓我們假設我有隔壁班:C++函數子使用,代碼重複避免
class Matrix{
public:
Matrix(int, int); // constructor
Matrix(const Matrix&); // copy constructor
Matrix& operator+= (const Matrix&);
Matrix& operator-= (const Matrix&);
int* operator[] (int) const;
private:
int rows;
int cols;
int** Mat_p;
};
和我想重載Matrix類中的+ =和 - =運算符。
現在,爲了總結或減去2個矩陣,我們需要遍歷兩個矩陣的每個值和增加或減少,因此會出現一些事情,如:
Matrix& Matrix::operator+= (const Matrix& M){
for (int indexR = 0; indexR < rows; ++indexR)
for (int indexC = 0; indexC < cols; ++indexC)
Mat_p[indexR][indexC] += M[indexR][indexC];
}
Matrix& Matrix::operator-= (const Matrix& M){
for (int indexR = 0; indexR < rows; ++indexR)
for (int indexC = 0; indexC < cols; ++indexC)
Mat_p[indexR][indexC] -= M[indexR][indexC];
}
,你可以看到無論是運營商「+ = 「和」 - =「具有相同的結構,所以所謂的」規則「之一就是避免代碼重複。
所以問的問題是我們如何避免這種重複並保持代碼有效?
這少量的代碼重複是不是一個真正的問題imo – Brian
@布萊恩那麼,我仍然想避免它(和任何方式,這只是一個例子...) –