Что такое намерение сделать функцию "const" - PullRequest
2 голосов
/ 26 октября 2011

Вот так:

bool isEmpty() const { return root==NULL; }

Это функция isEmpty, проверьте, является ли BST пустым или нет.

Ответы [ 4 ]

11 голосов
/ 26 октября 2011

Указывает, что функция не изменяет ни одного из членов этого класса.

Обычно интерфейс / объявление (через заголовочный файл) предоставляется пользователям класса / функций, а не реализации, поэтому const разъясняет пользователю, что функция не изменяет никаких членов.

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

Именно поэтому функция помечена const, даже если она пуста. Это указывает на контракт между исполнителем функции и пользователем функции.

2 голосов
/ 26 октября 2011

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

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

Вы можете вызывать функции const для экземпляров, не являющихся const, без проблем.

0 голосов
/ 26 октября 2011

Указывает, что функция логически постоянна, то есть, что касается пользователей класса, значение члена класса не изменяется функцией.Разрешается вызывать константные функции для константных ссылок и через константные указатели.

0 голосов
/ 26 октября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...