在此代碼中,爲什麼要將&放在const CVector & param中?操作員超載程序中的混淆
,我們可以用它作爲跟隨
c = a + b;
c = a.operator+ (b);
在第二份聲明,b
不CVector&
類型,所以這就是爲什麼我很困惑。
// overloading operators example
#include <iostream>
using namespace std;
class CVector {
public:
int x,y;
CVector() {};
CVector (int a,int b) : x(a), y(b) {}
CVector operator + (const CVector&);
};
CVector CVector::operator+ (const CVector& param) {
CVector temp;
temp.x = x + param.x;
temp.y = y + param.y;
return temp;
}
int main() {
CVector foo (3,1);
CVector bar (1,2);
CVector result;
result = foo + bar;
cout << result.x << ',' << result.y << '\n';
return 0;
}
請閱讀[運營商重載FAQ條目](http://stackoverflow.com/q/4421706/819272)。 – TemplateRex