有没有一种方法可以使用重载运算符作为比较的一部分

时间:2020-08-02 17:25:33

标签: c++ class operator-overloading

这是我的课程

#include <fstream>
#include <cstdlib>
#include <math.h>
#include <iomanip>
#include <iostream>
using namespace std;

class Point {
  protected:
    int x, y;

这是我要使用的重载运算符,它比较两点之间的差异。

    double operator-(const Point &def){ 
        return sqrt(pow((x-def.x),2.0)+ 
                  pow((y-def.y),2.0));
    }

};

class Circle: public Point {
  private:
    int radius;

  public:
    Circle(){     //Point default const called implicitly
this->x=x;
this->y=y;
this->radius=radius;
}
    void printCircleInfo() {
      cout << x << " " << y << " " << radius << " " ;
    }
bool operator=(const Circle &def){ 
  return (x==def.x) & (y==def.y) & (radius==def.radius);
}
    bool doIBumpIntoAnotherCircle(Circle anotherCircle){

在这里,我想使用重载算子将两点之间的距离与两个圆的组合半径进行比较。

      if (anotherCircle.radius + radius >=   operator-( Point def)    )
    return true;
      return false;
    }

};

int main(){
  const int SIZE = 13;
  Circle myCircleArry[SIZE] = { 5,3,9};
;
  
  cout << myCircleArry[0] <<":";
  ifstream Lab6DataFileHandle;

  Lab6DataFileHandle.open("Lab6Data.txt");
  while (!Lab6DataFileHandle.eof( )) {
 for (int i = 1; i < SIZE; i++) {
Lab6DataFileHandle>>myCircleArry[i];
Lab6DataFileHandle>>myCircleArry[i];
Lab6DataFileHandle>>myCircleArry[i];
cout << endl;
 if (myCircleArry[0].doIBumpIntoAnotherCircle(myCircleArry[i])) {
      myCircleArry[i].printCircleInfo(); cout << " ; ";
      If double operator=(const Point &def)}
{cout <<"*"
}


  }
  }
  Lab6DataFileHandle.close();
}

}

如何将先前创建的重载运算符用作bool函数doIBumpIntoAnotherCircle的一部分?请在您的答案中留下一个例子,将不胜感激。谢谢您的时间。

1 个答案:

答案 0 :(得分:0)

是的,您可以像这样直接使用从operator-继承的Point

bool doIBumpIntoAnotherCircle(Circle anotherCircle){
    if (anotherCircle.radius + radius >= *this - anotherCircle)
        return true;
    return false;
}

或更简单地说:

bool doIBumpIntoAnotherCircle(Circle anotherCircle){
    return anotherCircle.radius + radius >=  *this - anotherCircle;
}

此外,此函数应标记为const,并应使用const&来接受参数,如下所示:

bool doIBumpIntoAnotherCircle(Circle const &anotherCircle) const {