---
title: Константные методы и объекты
seo:
  title: Константные методы и объекты — C++ Developer
  description: Тема «Константные методы и объекты» для собеседования C++ Developer. Как работают константные методы?
---

[Все темы C++ Developer](/c-developer)

## <strong>Как работают константные методы?</strong> [#q-14bee738d69b8144b0f6dcae9384bf8d]

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

#### Пример&#58;

```cpp
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);  // Ошибка: нельзя вызывать неконстантный метод для константного объекта
}
```

#### Основные характеристики&#58;

1. <strong>Не могут изменять данные-члены объекта</strong>&#58; Константные
   методы не могут изменять данные-члены класса (исключение составляют данные,
   объявленные как <code>mutable</code>).

1. <strong>Могут вызываться для константных объектов</strong>&#58; Константные
   методы могут вызываться как для обычных, так и для константных объектов.

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

:::note[Ссылки для изучения]

1. [Константные методы и объекты в C++](https://metanit.com/cpp/tutorial/5.18.php)
   :::
