Перегрузка с помощью обычной функции

Для перегрузки операторов можно также использовать обычные функции, но в этом случае будет доступ только к общедоступным членам класса:

// Обычная функция
C operator+(const C &obj, int x) { // obj2 = obj1 + 5;
   return C(obj.getX() + x);
}

Доступа к закрытому полю x_ внутри функции нет, поэтому для получения значения поля используется общедоступный метод getX(), а для изменения значения — конструктор класса C. Т. к. мы объявили параметр obj константным, то внутри функции доступа к обычным методам не будет, только к общедоступным константным методам:

int getX() const { return x_; }

Если ключевое слово const при объявлении параметра в функции operator+() убрать, то будет доступ ко всем общедоступным методам.

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов