воскресенье, 10 февраля 2013 г.

переопределение операции индексирования c++

Через указатель на существующий представитель класса с помощью операции косвенного доступа к элементу (стрелки).

Для существующего представителя класса с помощью операции доступа к элементу (точки).

В языке С выделялось несколько различных типов области действия: глобальная, файл, функция, блок. В C++'вводится новый вид области действия класс. Имена элементов класса расположены в области действия класса, и к ним можно обращаться из функций-элементов данного класса. Кроме того, получить доступ к элементам класса можно в следующих случаях:

Класс как область действия

Здесь обе функции Get () определены как встроенные, а функция SetPoint () определяется вне тела класса и не является встроенной.

assert(y >= 0 && у < MaxY);

assert(x >=0 && x < MaxX);

void Point::SetPoint(int x, int y)

struct Point { // Класс.точек.

const int MaxX = 200; // Максимальные значения координат.

Функция-элемент класса объявляется внутри определения класса. Там же может быть расположено и оределение тела функции. В этом случае функцию-элемент называют встроенной и компилятор будет генерировать ее встроенное расширение на месте вызова. Если определение функции располагается вне тела класса, то к ее имени добавляется префикс, состоящий из имени класса и операции разрешения области действия. В этом случае функцию-элемент также можно определить как встроенную с помощью ключевого слова inline. Вот несколько модифицированный класс Point из предыдущей главы вместе с его реализацией:

Элементы-функции

Элемент данных класса может быть указателем или ссылкой на сам класс.

Элемент данных класса не может быть представителем самого класса.

Они могут быть перечислениями, битовыми полями, а также объектами ранее объявленных классов.

Они не могут быть объявлены как auto, extern или register.

Суммируем и дополним то, что говорилось об элементах данных в предыдущей главе. Элементы данных аналогичны элементам структур языка С. Стоит добавить следующее:

Как уже говорилось раньше, элементы класса распадаются на две категории. Это данные, инкапсулирующие состояние объектов, и код, отвечающий за их поведение и реализуемый в форме функций-элементов класса.

Мы переходим теперь к подробному изучению классов, включая, естественно, и аспекты их реализации.

В прошлой главе мы показали, как определяются простейшие классы C++. То, что содержится в приведенном коде это интерфейс класса. В самом определении класса объявляются обычно лишь прототипы функций-элементов. Чтобы класс стал работоспособным, необходима еще его реализация. Реализация класса, располагаемая часто в отдельном файле, содержит код его функций-элементов, а также некоторые элементы данных, называемые статическими.

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

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