Другие языки программирования и технологии

для чего в языке С ++ используется функция const?

то что она нужна для информирования компилятора о том, что содержимое объекта не должно изменяться после инициализации, я знаю, этот ответ его не устроил вот преподаватель мне задал вопрос, для чего в языке С++ используется функция const.
вот код где преподаватель дописал константу:
class Rectangl
{
private:
float heigt;
float width;
public:
Rectangl(float Height float Width);
float Area() const; - вот про него и собственно вопрос
>то что она нужна для информирования компилятора о том, что содержимое объекта не должно изменяться >после инициализации, я знаю, этот ответ его не устроил вот преподаватель мне задал вопрос, для чего в языке С++ используется функция const.
Почти верно, нужно только было сказать - это информирование компилятора о том, что содержимое обьекта не изменяется при работе данной функции. Это все. Про перегрузку константных функций для константнтых обьектов даже у Г. Шилдта ничего нет. Но преподаватель тебя тянул на 5+)).
Вадим Паниотов
Вадим Паниотов
35 996
Лучший ответ
В конкретном случае ключевое слово const говорит о том, что вызванной метод является константным и не изменяет состояние объекта. Ключевое слово const является частью сигнатуры, а это значит, что можно объявить в классе и не константный метод. Если предполагается создавать константные объекты класса, то должны быть перегружены методы этого класса, как константные, которые будут вызываться для константного объекта.

#include <iostream>

using namespace std;

class rectangle {
public:
    rectangle() : heigt(297), width(210) { }
    rectangle(float _h, float _w) : heigt(_h), width(_w) { }
    double area()const { return heigt * width; }
    double area() { s = heigt * width; return s; }
private:
    float heigt;
    float width;
    float s;
};

int main () {
    // пробуем за комментировать константный метод в классе.. .
    const rectangle object_1;
    cout << object_1.area() << endl;

    rectangle object_2(7, 8);
    cout << object_2.area() << endl;

    const rectangle object_3(5, 8);
    cout << object_1.area() << endl;

    cin.get();
    return 0;
}
Андрей Мищенко
Андрей Мищенко
52 743
препод тебя валит
Const позволяет организовать множество проверок ещё на этапе компиляции и избежать многих ошибок из числа тех, которые бывает трудно найти при помощи отладчиков и/или анализа кода. const лучше использовать там, где это возможно
Оно указывает на то, что значение поля или локальной переменной является постоянным и не может быть изменено.