Перегрузка оператора доступа к члену класса

Перегрузка оператора -> осуществляется так же как и перегрузка унарных операторов. В качестве значения «операторный» метод должен возвращать указатель this. Обратите внимание на то, что перегрузить оператор -> с помощью дружественной или обычной функции нельзя. Пример перегрузки оператора -> приведен в листинге 14.7.

Листинг 14.7. Перегрузка оператора ->

#include <iostream>

class C {
   int x_;
public:
   int y;
   C(int a, int b) { x_ = a; y = b; }
   C *operator->() { return this; }
};

int main() {
   C obj(30, 40);
   // obj->x_ = 10; // Ошибка. x_ - закрытый член класса
   obj->y = 20;     // OK. y - общедоступный член класса
   std::cout << obj->y << std::endl; // 20
   return 0;
}

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

Помощь сайту

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

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