В следующем примере все мои участники являются публичными, поэтому я не понимаю, почему мне все еще нужно добавить ключевое слово friend
.Более того, этот метод относится к экземпляру Point
, поэтому я также не понимаю, почему я должен ссылаться на свои атрибуты через const Point% p
.При перегрузке +
получен только иностранный экземпляр.
#include <iostream>
struct Point {
int x, y;
Point(int x, int y): x(x), y(y) {};
Point operator+(const Point& other) const {
return Point(x + other.x, x + other.y);
}
friend std::ostream& operator<<(std::ostream& os, const Point& p) {
return os << "(" << p.x << "," << p.y << ")";
}
};
int main() {
Point p = Point(4,7) + Point(8,3);
std::cout << p << std::endl;
}
Подобные вопросы, такие как one , не очень помогают в этом случае.