C++ Программирование в среде С++ Builder 5

Константные объекты и функции-элементы


Можно создать представитель класса с модификатором const. Тем самым гарантируется, что после инициализации содержимое объекта нельзя будет изменить. Компилятор C++Builder выдает предупреждение в случае, если для объекта вызывается функция-элемент, не объявленная как const. Другие компиляторы могут выдать сообщение об ошибке и отказаться транслировать подобный код.

Со своей стороны, константная функция-элемент

  • объявляется с ключевым словом const после списка параметров;
  • не может изменять содержимое элементов данных класса;
  • не может вызывать не-константные функции-элементы. Вот пример константной функции и константного объекта:
  • class Time {

    int hr, min;

    public:

    Time(int h, int m): hr(h), min(m) {}

    void SetTime(int h, int m) { hr = h; min = m;

    }

    void GetTime(int&, int&) const;

    }



    void Time::GetTime(int &h, int &m) const {

    h = hr;

    m = min;

    //

    // Следующий оператор здесь был бы некорректен:

    //

    // min = 0;

    int main ()

    {

    Time t(17, 45); // Обычный объект.

    const Time ct(18, 0); // Константный объект.

    int h, m;

    ct.GetTime(h, m); // Вызов const-функции для const-объекта. t.SetTime(h, m) ;

    //

    // Следующий вызов некорректен:

    // // ct.SetTime(0, 0) ;

    return 0;

    }



    Содержание раздела