Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1
Кент Рейсдорф. BORLAND C++BUILDER. Страница 85
В этом примере this используется в конструкторе (для установки свойства Owner кнопки, об этом я буду рассказывать на восьмой день, «Компоненты VCL»), а также присваивается свойству Parent вновь создаваемой кнопки. При создании приложений C++Builder вы будете использовать указатель this в основном таким образом.
Начав работать с VCL, вы быстро поймете, когда в приложениях C++Builder требуется использовать this.
Сейчас самое время привести пример использования классов. Последующие листинги содержат программу, в которую включены классы. Эта программа позволяет вам побыть в роли авиадиспетчера, выдавая команды трем самолетам. Листинг 4.1 — это заголовочный файл для класса Airplane, листинг 4.2 содержит исходный код для класса Airplane, а листинг 4.3 — основную программу.
Листинг 4.1. AIRPLANE.H
Листинг 4.2. (продолжение)
Листинг 4.3. AIRPORT.CPP
Листинг 4.3. (продолжение)
Давайте начнем с заголовочного файла из листинга 4.1. Прежде всего, обратите внимание на директивы #define. Они устанавливают соответствие между двумя текстовыми строками. Во время компиляции происходит замена первой строки на вторую. #define используется здесь потому, что гораздо легче запомнить строку текста, чем номер. Что из приведенного ниже вы предпочтете?
По традиции для записи имен констант, определенных с помощью #de- fine, используются буквы верхнего регистра, но вы можете смешивать произвольным образом прописные и строчные буквы. Я предпочитаю использовать только верхний регистр, поскольку это позволяет с первого взгляда отличать константу от переменной.
Следующее, на что нужно обратить внимание в заголовочном файле — это использование подставляемых функций. Эти функции настолько малы, что имеет смысл сделать их подставляемыми. Вы могли также заметить, что класс Airplane имеет одну перегруженную функцию с именем GetStatusQ. При вызове с аргументом в виде символьного массива она возвращает строку состояния, а при вызове без аргументов — значение переменной status. Заметьте, что из всех членов-данных лишь один является открытым. Доступ к остальным членам возможен только через открытые функции. Например, вы можете изменить скорость, высоту и курс самолета, только выдав ему соответствующую команду. Аналогично этому, авиадиспетчер не может физически изменить направление полета самолета. Максимум, что он может сделать — это дать указание пилоту изменить курс.