Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Билет 5
- Константные методы
- Методом класса называют функцию из класса.
- Ниже класс Time - в нем хранится время - часы, минуты, секунды.
- Константный метод не меняет состояние класса. Это добавляет удобства и безопасности в работе с классами.
- Например - в классе Time есть константные методы GetHours() const, GetMinutes() const -
- они не меняют оюъект класса, а только возвращают значения из соответствующих полей.
- Также в классе есть метод AddSeconds(int s) - этот метод меняет состояние объекта класса,
- добавляет секунды в поле seconds. Так как этот метод меняет состояние - он не может быть константным
- и также не может работать с константными объектами класса.
- */
- class Time {
- private:
- int hours, minutes, seconds;
- public:
- Time(int h, int m, int s) : hours(h), minutes(m), seconds(s) {}
- int GetHours() const {
- return hours;
- }
- int GetMinutes() const {
- return minutes;
- }
- int GetSeconds() const {
- return seconds;
- }
- void AddSeconds(int s) {
- seconds += s; //понятно, что секунд не может быть больше 60,
- //не настраиваем этот нюанс, так как разбираем тут другую тему - константность методов
- }
- };
- #include <iostream>
- int main() {
- Time t(10, 8, 0); // 10:08:00
- t.AddSeconds(40); // 10:08:40
- // Константная ссылка: через псевдоним cref объект нельзя изменять
- const Time& cref = t;
- // Константную функцию из класса вызвать можно
- std::cout << cref.GetHours() << "\n"; // OK
- // Неконстантную функцию из класса нельзя вызвать у константной сущности
- cref.AddSeconds(20); // ошибка компиляции
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement