我们有以下课程。我需要解释一些代码部分。
class CPoint3D
{
public:
double x, y, z;
CPoint3D (double dX = 0.0, double dY = 0.0, double dZ = 0.0)
: x(dX), y(dY), z(dZ) {}
//what means these lines of code?
CPoint3D operator + (const CPoint3D& point) const;
CPoint3D operator - (const CPoint3D& point) const;
CPoint3D operator * (double dFactor) const;
CPoint3D operator / (double dFactor) const;
};
我想用
CPoint3D operator + (const CPoint3D& point) const;
函数我可以轻松地添加/减去/乘/除实例CPoint3D
类的实例?
有人可以用例子来解释这个吗? 谢谢!
答案 0 :(得分:11)
网上有数以百万计的示例和/或文章(包括this one),所以我不会在这里重复它们。
我只想说当你用CPoint3D
将两个obj1 + obj2
个对象加在一起时,被调用的函数为operator+
,该对象为this
,另一个是point
。
您的代码负责创建另一个包含这两个对象的对象,然后将其返回。
同样减法。乘法运算符略有不同,因为它们使用double作为另一个参数 - 可能是在为加法运算符添加/减去类的各个成员时有意义,这对乘法运算没有用处的。
答案 1 :(得分:4)
您可以阅读一些关于C++ operator overloading的文献。还有here或here,或者只是谷歌:)
以下是cplusplus.com的简单示例:
// vectors: overloading operators example
#include <iostream>
using namespace std;
class CVector {
public:
int x,y;
CVector () {};
CVector (int,int);
CVector operator + (CVector);
};
CVector::CVector (int a, int b) {
x = a;
y = b;
}
CVector CVector::operator+ (CVector param) {
CVector temp;
temp.x = x + param.x;
temp.y = y + param.y;
return (temp);
}
int main () {
CVector a (3,1);
CVector b (1,2);
CVector c;
c = a + b;
cout << c.x << "," << c.y;
return 0;
}