运算符关键字c ++

时间:2013-08-16 08:42:38

标签: c++ operator-keyword

我们有以下课程。我需要解释一些代码部分。

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类的实例?

有人可以用例子来解释这个吗? 谢谢!

2 个答案:

答案 0 :(得分:11)

网上有数以百万计的示例和/或文章(包括this one),所以我不会在这里重复它们。

我只想说当你用CPoint3D将两个obj1 + obj2个对象加在一起时,被调用的函数为operator+,该对象为this,另一个是point

您的代码负责创建另一个包含这两个对象的对象,然后将其返回。

同样减法。乘法运算符略有不同,因为它们使用double作为另一个参数 - 可能是在为加法运算符添加/减去类的各个成员时有意义,这对乘法运算没有用处的。

答案 1 :(得分:4)

您可以阅读一些关于C++ operator overloading的文献。还有herehere,或者只是谷歌:)

以下是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;
}