Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpOpObCh 30 of 150 menu
◀ ▶

Цепочки вызовов в C++

Методы можно вызывать друг за другом, цепочкой. Для этого метод возвращает тот же объект, и следующий вызов пишут через точку.

Сам объект внутри метода получают так: перед this ставят звезду, *this. Тип результата - ссылка на User, ее пишут User&. Запишем класс User с двумя сеттерами:

#include <iostream> #include <string> class User { public: std::string name; std::string surn; User& setName(std::string name) { this->name = name; return *this; } User& setSurn(std::string surn) { this->surn = surn; return *this; } };

Создадим объект и выведем имя с фамилией после цепочки сеттеров:

int main() { User user; user.setName("john").setSurn("smit"); std::cout << user.name << " " << user.surn << "\n"; return 0; }

Порядок вызовов в цепочке может быть любым - каждый метод работает с тем же объектом. Запишем класс с сеттерами имени и возраста:

#include <iostream> #include <string> class User { public: std::string name; int age = 0; User& setName(std::string name) { this->name = name; return *this; } User& setAge(int age) { this->age = age; return *this; } };

Создадим объект, вызовем сеттеры в другом порядке и выведем поля:

int main() { User user; user.setAge(25).setName("john"); std::cout << user.name << "\n"; std::cout << user.age << "\n"; return 0; }

Сделайте класс Employee с полями name и salary. Сделайте методы setName и setSalary, которые возвращают Employee&.

Создайте объект Employee цепочкой из двух сеттеров. Выведите имя и зарплату.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить