Когда у нас нет определения Operator + как друга?C ++ - PullRequest
0 голосов
/ 03 июня 2018

Я читал в некоторых источниках, что если мы реализуем operator+ с помощью operator=+, поэтому у нас нет определения operator+ как «друга».

Кто-нибудь может это объяснить?

1 Ответ

0 голосов
/ 03 июня 2018

Идея состоит в том, чтобы избежать дублирования кода.Посмотрите этот пример:

class A
{
    int a = 0;

public:
    A & operator+=(const A& other) { a += other.a; return *this; }
};

Тогда вы могли бы реализовать operator+ с точки зрения operator+=, сохранив себе дубликат кода и сохранив его как бесплатную функцию:

A operator+(const A& lhs, const A& rhs) { A tmp(lhs); tmp += rhs; return tmp; }

Какиеозначает, что теперь у вас есть две функции.И если вы измените значение +=, значение + также изменится.Проще поддерживать.

...