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