Энциклопедия C++ Builder



ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ И C++ - часть 8


double getX(); |

double getY() ;

Листинг 3.2. Объявление базовой компоненты TPoint.

Объявления и определения методов хранятся в разных файлах (с расширениями .h и .срр, соответственно). Листинг 3.3 показывает, что когда методы определяются вне класса, их имена следует квалифицировать. Синтаксис такой квалификации метода, определяющей его область видимости, имеет следующий вид:

<имя класса>::<имя метода>

TPoint::TPoint(double xVal, double yVal)

( // Тело конструктора

void _fastcall TPoint::SetCount( int Value )

{

l

if ( Value i= FCount ) // Новое значение члена данных? {

FCount = Value; // Запись нового значения Update(); // Вызов метода Update } }

double TPoint::getX()

// Тело метода getX,

квалифицированного в классе^TPoint

}

Листинг 3.3. Определения конструктора и методов вне класса.

После того, как вы объявили класс, его имя можно использовать как идентификатор типа при объявлении объекта этого класса (например,

TPoint* MyPoint;).

3.4.2 Конструкторы и деструкторы

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

• Имеют имя, идентичное имени своего класса.

• Не имеют возвращаемого значения.

• Не могут наследоваться, хотя производный класс может вызывать конструкторы и деструкторы базового класса.

• Автоматически генерируются компилятором как public, если не были вами объявлены иначе.

• Автоматически вызываются компилятором, чтобы гарантировать надлежащее создание и уничтожение объектов классов.

• Могут содержать неявные обращения к операторам new и delete,

если объект требует выделения и уничтожения динамической памяти.

Листинг 3.4 демонстрирует обобщенный синтаксис объявлений конструкторов и деструктора.

class className

{ public:

// Другие члены данных className(); // Конструктор по умолчанию | className(<список параметров;-);// Конструктор с аргументами | className(const className&); // Конструктор копирования




Содержание  Назад  Вперед