Как перегрузить оператор opAssign «глобально» в C ++ - PullRequest
1 голос
/ 04 октября 2009

Просто интересно, как их перегрузить.

Операторы opAssign похожи на addAssign (+ =) и subAssign (- =).

«глобально» означает, что они не перегружены как функции-члены, а просто действуют как операторы над операндами

Для этих операторов opAssign они являются бинарными операторами (они получают два операнда) Поэтому необходимы два параметра.

Я не нашел примеров в сети .....

Ответы [ 2 ]

9 голосов
/ 04 октября 2009

Вот тривиальный пример определения operator+=:

struct Foo{
    int x;
};

Foo& operator+=(Foo& lhs, const Foo& rhs) {
    lhs.x += rhs.x;
    return lhs;
}
2 голосов
/ 04 октября 2009

Оператор присваивания (=) является особенным в том смысле, что он всегда должен быть нестатической функцией-членом согласно «§13.5.3 Назначение» стандарта C ++.

Оператор присваивания должен быть реализован нестатической функцией-членом с ровно одним параметром

То же самое верно для оператора вызова функции и оператора индекса. Другие операторы «присваивания» (+ =, - =, * = и т. Д.) Могут быть свободными двоичными функциями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...