7

Что означает "const" в конце объявления функции?

1

Заголовок: Что означает 'const' в конце объявления метода класса?

Я читаю книгу, в которой говорится о следующем:

class Foo 
{
public:
    int Bar(int random_arg) const
    {
        // код
    }
};

Мне не совсем понятно, что означает использование ключевого слова 'const' в конце объявления метода Bar.

Можете объяснить, как это влияет на работу метода и что это означает с точки зрения языка C++? Также был бы признателен за любые ссылки на дополнительные ресурсы, которые могут прояснить этот вопрос.

Заранее спасибо!

3 ответ(ов)

0

Когда вы работаете с двумя переменными типа класса, как в вашем примере, у вас есть различия в том, какие функции-члены класса вы можете вызывать на этих объектах.

class Boo { ... };

Boo b0;       // изменяемый объект
const Boo b1; // неизменяемый объект

В случае с b0, так как это обычный (изменяемый) объект, вы можете вызывать любыe функции-члены класса Boo, включая как изменяющие, так и неизменяющие функции. Это позволяет вам изменять состояние объекта b0.

Однако для b1, который является const-объектом, вы можете вызывать только функции-члены, которые объявлены как const. Это ограничение гарантирует, что состояние объекта не будет изменено. Если вы попытаетесь вызвать изменяющую функцию на b1, компилятор выдаст ошибку.

Таким образом, ваше использование const для объекта b1 играет ключевую роль в обеспечении неизменности и целостности данных.

0

Я всегда нахожу концептуально проще думать о том, что вы делаете указатель this константным (что, по сути, он и делает).

0

Функция не может изменить свои параметры через указатель/ссылку, который вы ей передали.

Я рекомендую посетить следующую страницу, когда вам нужно об этом задуматься:

http://www.parashift.com/c++-faq-lite/const-correctness.html

Также я считаю, что в книге "Более эффективный C++" автора Скотта Мейерса есть хорошая глава на эту тему.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь