В кількох попередніх прикладах ми бачили, що ключове слово const можна використовувати для захисту від зміни значень змінних стандартних типів, наприклад, int. Виявляється, аналогічним способом можна застосовувати модифікатор const і для об’єктів класів. Якщо об’єкт класу оголошений з модифікаторм const, він стає недоступним для зміни. Це означає, що для такого об’єкта можна викликати тільки константні методи, оскільки лише вони гарантують, що об’єкт не буде змінений. В якості прикладу розглянемо програму 9.10.
#include <iostream.h>
#include <conio.h>
#include <bios.h>
class Distance
{private:
int feet;
float inches;
public:
//Конструктор з 2 аргументами
Distance(int ft,float in):feet(ft),inches(in)
{ }
void getdist() //Неконстантний метод
{cout <<"\nВведіть число футів "; cin >>feet;
cout << "дюймів "; cin>>inches;
}
void showdist() const //Константний метод
{cout <<feet << "\' "<< inches <<"\''";}
};
int main()
{
clrscr();
const Distance football(300,0);
//football.getdist();
cout <<"Довжина поля=";
football.showdist();
cout <<endl;
bioskey(0);
return 0;
}
Програма 9.10
Об’єкт football оголошений як константний, тому для нього можна викликати тільки константні методи, наприклад, showdist(). Виклики неконстантних методів, таких як getdist(), є некоректними.
При створенні класу хороший стиль програмування вимагає оголошення як константних функцій, що не міняють поля об’єктів класу. Це дозволяє тому, хто використовує даний клас, створювати константні об’єкти класу. З цих об’єктів можуть викликатися тільки константні функції.