Страницы

Поиск по вопросам

понедельник, 15 октября 2018 г.

Зачем нужен const в сигнатуре метода класса?

Что означает const в данном случае?
class Person { int age; public: void display() const { cout << "тут что-то выводим " << age << endl; } }


Ответ

Это означает, что функция не изменяет сам объект (за исключением членов данных объекта класса, объявленных со спецификатором mutable, которые можно менять даже в функциях, объявленных с квалификатором const), для которого она вызвана.
Поэтому эту функцию вы можете вызывать, например, для константных объектов:
const Person person = { 18 };
person.display();
Или
void f( const Person &person ) { person.display(); }
//...
Person person = { 18 };
f( person );
То есть вгутри этой функции указатель на объект this имеет тип const Person *
Имейте в виду, что определение класса должно завершаться точкой с запятой:
class Person { //... }; ^^^

Комментариев нет:

Отправить комментарий