Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
0495976_C19D7_shpory_s.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1.82 Mб
Скачать
  1. Конструкторы и деструкторы.

Если у класса есть конструктор, он вызывается всякий раз при создании объекта этого класса. Если у

класса есть деструктор, он вызывается всякий раз, когда уничтожается объект этого класса. Объект

может создаваться как:

[1] автоматический, который создается каждый раз, когда его описание встречается при

выполнении программы, и уничтожается по выходе из блока, в котором он описан;

[2] статический, который создается один раз при запуске программы и уничтожается при ее

завершении;

[3] объект в свободной памяти, который создается операцией new и уничтожается операцией

delete;

[4] объект-член, который создается в процессе создания другого класса или при создании массива,

элементом которого он является.

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

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

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

  • Конструктор имеет такое же имя, как и класс.

  • Конструктор не имеет возвращаемого значения.

  • Каждый раз, когда ваша программа создает переменную класса, C++ вызывает конструктор класса, если конструктор существует.

  • Многие объекты могут распределять память для хранения информации; когда вы уничтожаете такой объект, C++ будет вызывать специальный деструктор, который может освобождать эту память, очищая ее после объекта.

  • Деструктор имеет такое же имя, как и класс, за исключением того, что вы должны предварять его имя символом тильды (~).

  • Деструктор не имеет возвращаемого значения.

  1. Конструкторы и способы обращения к ним.

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

class_name object(valuel, value2, value3)

Итак, конструкторы используются для создания объекта. Благодаря конструкторам разрабатываемые новые типы данных становятся такой неотъемлимой частью языка, как и встроенные типы. Конструктор определяет, каким образом новый объект типа класса будет создан, как будет проводиться выделение памяти и инициализация объекта. Его определение может включать инструкции для выделения памяти, присваивания значений элементам, преобразование типов, и все что угодно, необходимое для данного класса. При этом конструкторы наследуют имя своего класса:

class sber_bank { < Объявление класса

private:

double big_bucks;

public:

sber_bank(double bucks); < Конструктор

void deposit(double bucks);

double withdraw(double bucks);

};

Разберем порядок описания конструктора:

Селектор Используемый класс Имя конструктора

sber_bank :: sber_bank(double bucks)

{

big_bucks = bucks; < Инициализация данных

}

Конструктор можно сделать встроенным:

class sber_bank {

private:

double big_bucks;

public:

// Встроенный конструктор

sber_bank(double bucks) { big_bucks = bucks; }

void deposit(double bucks);

double withdraw(double bucks);

};

Вызов конструкторов

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

Имя Объект класса

sber_bank counterfeit_bank_of_AZ(1000000.00);

Обусловлено вызовом конструктораКонструкторы могут вызываться во время, когда выполняется обращение к объекту. Так, конструктор вызывается всякий раз, когда обращаются к функции элементу объекта:

void doit(void)

{

sber_bank telly(1000.0); < Здесь вызывается конструктор

...

Количество конструкторов неограниченно. Существуют также конструкторы копирования и т.д. Компилятор сам определяет какой именно конструктор вызывается.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]