Страницы

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

вторник, 10 декабря 2019 г.

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

#cpp


Что означает const в данном случае?

class Person
{
    int age;
public:
    void display() const
    {
        cout << "тут что-то выводим " << age << endl;
    }
}

    


Ответы

Ответ 1



Это означает, что функция не изменяет сам объект (за исключением членов данных объекта класса, объявленных со спецификатором 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 { //... }; ^^^

Ответ 2



Попробуйте почитать книгу Роберта Лафоре. Там это очень прекрасно описано :) В двух словах примерно так: Объект, который вы создадите, не сможет поменять данные через этот метод. class Person { public: int age; void display() const { cout<<"тут что-то выводим"<

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

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