【问题标题】:using friend function with const reference in operator overloading在运算符重载中使用带有 const 引用的友元函数
【发布时间】:2018-06-30 20:12:02
【问题描述】:

以下代码无法编译。但是,当我从朋友函数的 Point& 中删除“const”时,此代码将被编译。谁能解释一下原因?

class Point
{
  public:
    Point(double x, double y);
    Point operator+(const double& add);
    friend Point operator+(const double& add, const Point& p){return p+add;}
  private:
    double px, py;
};

Point::Point(double x, double y): px(x), py(y){}
Point Point::operator+(const double& add){
  return(Point(px+add, py+add));
}
int main(){}

【问题讨论】:

    标签: c++ operator-overloading friend const-reference


    【解决方案1】:

    operator+ 未标记为 const,但尝试通过 const 引用调用。 常量指针和引用只允许调用标记为常量的成员函数(因为编译器肯定知道这些函数保证不会修改内部状态)。

    【讨论】:

      猜你喜欢
      • 2017-07-26
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-09
      相关资源
      最近更新 更多