Перейти к содержимому
На этой странице

Константные методы и объекты

Все темы C++ Developer

Как работают константные методы?

В const-методе this указывает на const-объект, поэтому через него нельзя менять обычные поля и вызывать неконстантные методы. Однако mutable-поля и объекты, доступные через хранимые указатели, могут изменяться. const не гарантирует глубокую неизменяемость или потокобезопасность.

Пример:

class MyClass {
public:
    int getValue() const { // Константный метод
        return value;
    }

    void setValue(int val) {
        value = val;
    }

private:
    int value = 0;
};

int main() {
    const MyClass obj;  // Константный объект
    int val = obj.getValue();  // Можно вызывать константный метод
    // obj.setValue(10);  // Ошибка: нельзя вызывать неконстантный метод для константного объекта
}

Основные характеристики:

  1. Не могут изменять данные-члены объекта: Константные методы не могут изменять данные-члены класса (исключение составляют данные, объявленные как mutable).

  2. Могут вызываться для константных объектов: Константные методы могут вызываться как для обычных, так и для константных объектов.

Это помогает обеспечить безопасность и защиту данных, предотвращая случайные изменения состояния объекта.

Собеседования: C++

Смотри записи интервью, узнай, какие вопросы задают и как отвечают кандидаты.

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

Эти вопросы встречались нам на реальных собеседованиях в 2025 году. Мы регулярно проходим собеседования и пополняем подборку новыми вопросами. Основы профессии и ключевые технологии остаются востребованными годами, а детали конкретных инструментов и версий стоит сверять с текущей документацией.

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: C++-разработчик, Разработчик системного ПО. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

Гарантии нет: набор вопросов зависит от компании, задач команды, уровня вакансии и самого интервьюера. Эти вопросы уже встречались на реальных собеседованиях, но на твоём интервью ту же тему могут проверить другой формулировкой, практической задачей или обсуждением твоего опыта. Используй подборку, чтобы разобраться в теме: объясняй идею своими словами, приводи примеры и готовься обсудить ограничения и альтернативы решения. Так будет проще ответить и на знакомый вопрос, и на неожиданные уточнения.