ВУЗ:
Составители:
Рубрика:
40
Конструкторы и деструкторы
В языке Си++ существуют специальные функции-элементы класса, которые
вызываются автоматически и определяют список действий, выполняемых при
создании и уничтожении объектов класса. Такими функциями являются
конструкторы и деструкторы.
Конструктор - это функция, которая определяет набор действий, выполняемых
при создании объекта класса. Имя конструкторасовпадает с именем класса,
элементом которого
он является. Какправило, конструктор содержит вызов
оператора new, либо действия,связанные с начальной инициализацией объекта.
Деструктор, в отличие от конструктора, содержит набор операторов, которые
выполняются перед уничтожением объекта. В набор таких операторов может
входить вызов оператора delete. Имя деструктора совпадает с именем класса,
которому предшествует символ ~.
Конструкторы и деструкторы
не могут быть описаны как функции,
возвращающие значение, даже void. Получить адрес этих функций невозможно.
Конструкторы вызываются в порядке создания объектов, деструкторы - в обратном
порядке. Конструкторы класса должны иметь спецификатор доступа public.
Каждый класс может иметь несколько конструкторов, которые отличаются
друг от друга списком аргументов, поскольку в языке Си++ функции различаются
не только по именам, но и по спискам аргументов и возвращаемых значений. У
любого класса может быть только один деструктор. Деструктор не имеет
аргументов.
Важнейшими разновидностями конструкторов являются конструктор по
умолчанию, не имеющий входных параметров, и конструктор копии, единственный
аргумент которого - ссылка на постоянный объект. Конструктор по умолчанию
используется тогда,
когда начальные значения извне не заданы. Конструктор копии
предназначен для инициализации объекта данными другого объекта того же класса.
Если эти два вида конструкторов не были определены программистом, то
компилятор автоматически их сгенерирует. При этом конструктор по умолчанию
будет пустым, а конструктор копии будет выполнять побитное копирование
источника в создаваемый объект.
Если
при описании класса деструктор не был явно описан программистом, то
деструктор будет сгенерирован компилятором.
Перегрузка операций
Язык Си++ поддерживает средства, которые позволяют переопределять уже
существующие операции. Такое переопределение называют перегрузкой
(overloading) операций.
40
Конструкторы и деструкторы
В языке Си++ существуют специальные функции-элементы класса, которые
вызываются автоматически и определяют список действий, выполняемых при
создании и уничтожении объектов класса. Такими функциями являются
конструкторы и деструкторы.
Конструктор - это функция, которая определяет набор действий, выполняемых
при создании объекта класса. Имя конструкторасовпадает с именем класса,
элементом которого он является. Какправило, конструктор содержит вызов
оператора new, либо действия,связанные с начальной инициализацией объекта.
Деструктор, в отличие от конструктора, содержит набор операторов, которые
выполняются перед уничтожением объекта. В набор таких операторов может
входить вызов оператора delete. Имя деструктора совпадает с именем класса,
которому предшествует символ ~.
Конструкторы и деструкторы не могут быть описаны как функции,
возвращающие значение, даже void. Получить адрес этих функций невозможно.
Конструкторы вызываются в порядке создания объектов, деструкторы - в обратном
порядке. Конструкторы класса должны иметь спецификатор доступа public.
Каждый класс может иметь несколько конструкторов, которые отличаются
друг от друга списком аргументов, поскольку в языке Си++ функции различаются
не только по именам, но и по спискам аргументов и возвращаемых значений. У
любого класса может быть только один деструктор. Деструктор не имеет
аргументов.
Важнейшими разновидностями конструкторов являются конструктор по
умолчанию, не имеющий входных параметров, и конструктор копии, единственный
аргумент которого - ссылка на постоянный объект. Конструктор по умолчанию
используется тогда, когда начальные значения извне не заданы. Конструктор копии
предназначен для инициализации объекта данными другого объекта того же класса.
Если эти два вида конструкторов не были определены программистом, то
компилятор автоматически их сгенерирует. При этом конструктор по умолчанию
будет пустым, а конструктор копии будет выполнять побитное копирование
источника в создаваемый объект.
Если при описании класса деструктор не был явно описан программистом, то
деструктор будет сгенерирован компилятором.
Перегрузка операций
Язык Си++ поддерживает средства, которые позволяют переопределять уже
существующие операции. Такое переопределение называют перегрузкой
(overloading) операций.
Страницы
- « первая
- ‹ предыдущая
- …
- 38
- 39
- 40
- 41
- 42
- …
- следующая ›
- последняя »
