ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 6) онлайн
Константные объекты
В нескольких наших примерах мы видели, что ключевое слово const можно при- менять для защиты от изменения значений переменных стандартных типов, та- ких, как, например, int. Оказывается, аналогичным способом мы можем приме- нять модификатор const и для объектов классов. Если объект класса объявлен с модификатором const, он становится недоступным для изменения. Это означает, что для такого объекта можно вызывать только константные методы, поскольку только они гарантируют, что объект не будет изменен. В качестве примера рас- смотрим программу CONSTOBJ.
//constObj.cpp
//constant Distance objects
#include <iostream>
using namespace std;
//////////////////////////////////////////////////////////
class Distance // длина в английской системе
{
private:
int feet;
float inches;
public: // конструктор с двумя аргументами
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()
{
const Distance football(300,0);
//football.getdist(); // ошибка: метод getdist() неконстантный
cout << " Длина поля равна ";
football.showdist(); // корректно
cout << endl;
return 0;
}
Футбольное поле в американском футболе имеет длину ровно 300 футов. Если бы нам было необходимо использовать в программе величину, выражаю- щую длину футбольного поля, то для нас имело бы смысл сделать эту величину константной. Именно это и сделано в программе CONSTOBJ в отношении объекта football. Теперь для этого объекта можно вызывать только константные методы, например showdist(). Вызовы неконстантных методов, таких, как getdist(), кото- рый присваивает полям объекта значения, вводимые пользователем, являют- ся некорректными. Таков механизм, обеспечивающий требуемую константность объекта football.
Когда вы создаете класс, всегда является хорошим стилем объявлять кон- стантными функции, не изменяющие полей объектов класса. Это позволяет то- му, кто использует данный класс, создавать константные объекты класса. Из этих объектов могут вызываться только константные функции. Использование модификатора const упрощает компилятору задачу оказания вам своевременной помощи в процессе создания программы.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
Схожі підручники
- ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 1) онлайн
- Мікро економіка. План семінарських
- Економічна і соціальна географія
- Товарознавство харчових продуктів функціонального призначення. Навчальний посібник (частина 1)
- Соціальне страхування. Навчальний посібник (частина 2)
- Філософія (частина 2)
