Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Перегрузка с помощью дружественной функции
Параметры дружественной функции передаются явным образом. Объект, расположенный слева от оператора, доступен через первый параметр, а объект, расположенный справа от оператора, доступен через второй параметр. Объявление дружественной функции внутри объявления класса выглядит так:
friend C operator+(int x, C &obj);
Пример определения дружественной функции вне класса:
C operator+(int x, C &obj) { // Целое число + объект класса C
C newobj;
newobj.x_ = obj.x_ + x; // Обращение к x_ через параметр
return newobj;
}
С помощью дружественной функции можно также заменить «операторный» метод. Тем не менее, стоит отдать предпочтение «операторным» методам, а дружественные функции применять в случаях, когда обойтись методом нельзя. В качестве примера перегрузим оператор +
для сложения объекта с целым числом:
C operator+(C &obj, int x) { // Объект класса C + целое число
C newobj;
newobj.x_ = obj.x_ + x;
return newobj;
}
Если мы хотим, чтобы в выражении слева и справа от объекта могли быть расположены целые числа:
C obj1(10), obj2;
obj2 = 10 + obj1 + 5;
std::cout << obj2.getX() << std::endl; // 25
то при объявлении типа параметра нужно дополнительно указать ключевое слово const
:
friend C operator+(int x, const C &obj);
friend C operator+(const C &obj, int x);
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов