2
我從來沒有使用操作符重載前,我的任務之一,它說:C++我應該重載操作符嗎?
「使用多態僅作爲適當的一般規則是,如果一個內置的運營商成員函數的 目的相匹配,那麼它應該。超載「。
我已經設法讓兩個版本都能正常工作,我認爲ApplyFilter的第二個版本更好。但通過使用運算符重載,它是否會讓代碼更難讀?
非重載
int TheFilter::ApplyFilter(TheData& dataIn, TheData& dataOut) {
// other stuff here.
for (int i = 0; i < dataOut.length(); i++) {
dataOut.set_values(i, 0);
for (int j = 0; j < length(); j++) {
dataOut.set_values(i, (dataOut.get_values(i)
+ (dataIn.get_values(i+j) * get_values(j))));
}
}
}
重載
int TheFilter::ApplyFilter(const TheData& dataIn, TheData& dataOut) {
// other stuff here
for (int i = 0; i < dataOut.length(); i++) {
dataOut[i] = 0;
for (int j = 0; j < length(); j++) {
dataOut[i] += dataIn[i+j] * values[j];
}
}
return OK;
}
編輯 - 我是使用重載的版本數據類!
class TheData {
public:
int length()
double& operator[] (int index);
const double& operator[] (int index) const;
void print();
void resize(int);
private:
std::vector<double> values;
bool valid;
};
這取決於'data'類... – yizzlez
這裏是運算符重載的基本規則是在C++中嗎? [基本規則重載操作符](http://stackoverflow.com/questions/4421706/operator-overloading/4421708#4421708) – KRUKUSA