Перейти к содержимому
шпаргалка.
Esc
навигацияоткрыть⌘Jпредпросмотр
На этой странице

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

Все темы 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. Могут вызываться для константных объектов: Константные методы могут вызываться как для обычных, так и для константных объектов.

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

Эта страница была полезной?