重载操作符命令

发布于 2024-12-08 02:35:09 字数 686 浏览 0 评论 0原文

可能的重复:
C++ 中的运算符重载为 int + obj
运算符重载

我有一个带有此运算符的 Point 对象:

Point operator +(float other) const {
  return Point(x + other, y + other, z + other);
}

我可以像这样执行加法:

point + 10

但我无法以相反的顺序执行它:

10 + point

是否需要重载另一个运算符才能提供此功能?

Possible Duplicate:
Operator Overloading in C++ as int + obj
Operator overloading

I have a Point object with this operator:

Point operator +(float other) const {
  return Point(x + other, y + other, z + other);
}

I can perform addition like so:

point + 10

But I can't perform it in reverse order:

10 + point

Is there another operator I need to overload in order to provide this functionality?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

流云如水 2024-12-15 02:35:09

您通常希望重载全局运算符:

Point operator+(Point const &a, float b);
Point operator+(float a, Point const &b);

您可能只想使用一个重载,而不是两个重载:

Point operator+(Point const &a, Point const &b);

然后使用一个构造函数从浮点数创建一个点:

class Point { 
    public:
        Point(float);
};

在这种情况下,添加一个浮点数to a Point 将使用 ctor 将浮点转换为 Point,然后使用重载的运算符+将这两个点添加在一起。

You normally want to overload the global operator:

Point operator+(Point const &a, float b);
Point operator+(float a, Point const &b);

Instead of two overloads, you may want to use only one overload:

Point operator+(Point const &a, Point const &b);

and then have a ctor to create a Point from a float:

class Point { 
    public:
        Point(float);
};

In this case, adding a float to a Point will use the ctor to convert the float to a Point, then use your overloaded operator+ to add those two Points together.

复古式 2024-12-15 02:35:09

作为免费功能:

Point operator+(float other, const Point &pt) {
    return pt+other;
}

As a free function:

Point operator+(float other, const Point &pt) {
    return pt+other;
}
时光瘦了 2024-12-15 02:35:09

给定一个现有的 Point& Point::operator+=(float other),添加这两个自由函数:

Point operator+(Point pt, float other) {
  return pt += other;
}
Point operator+(float other, Point pt) {
  return pt += other;
}

Given an existing Point& Point::operator+=(float other), add these two free functions:

Point operator+(Point pt, float other) {
  return pt += other;
}
Point operator+(float other, Point pt) {
  return pt += other;
}
生生不灭 2024-12-15 02:35:09

课外:

inline Point operator+(const float& other, const Point& pnt) { return Point(...); };

Outside of the class:

inline Point operator+(const float& other, const Point& pnt) { return Point(...); };
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文