- •Конструкторы и деструкторы
- •Формат компонентной функции-деструктора
- •Void main () {
- •Void main()
- •Void main()
- •Конструктор с аргументами, задаваемыми по умолчанию
- •Void main ()
- •Void shownumber ( void)
- •Конструктор по умолчанию
- •Конструктор копирования
- •Int GetX ( ) { return X; }
- •Int GetX ( ) { return X; }
- •Int GetY ( ) { return y; }
- •Void Print ( t obj )
- •Void main () {
- •Void main ( )
- •Void main ( )
- •Void vivod ( ) // выводит данные
- •Void main ( )
- •Имя класса ::имя компонента
- •Void main ( )
- •Тип данных(имя класса ::*имя указателя)
- •Имяобъекта.* указатель на компонент данных;
- •Имя объекта.*указатель на метод(параметры);
- •Компонентные функции
- •Initgraph( тип графического драйвера, режим адаптера , путь к драйверу)
- •Void far initgraph (int far * graphdriver, int far * graphmode, char far * pathtodriver);
- •Void point :: show (void)
- •Void point :: hide(void)
- •Void main ( )
- •Указатель this
- •Void print ( void) void print ( void)
- •Void main ()
- •Void que::add(void)
- •Void que::print (void)
- •Void main( )
Конструкторы и деструкторы
Класс может содержать любое количество функций - членов самого разнообразного назначения, но два типа функций занимают особое положение. Эти функции называются конструктором и деструктором.
Для многих объектов естественно требовать, чтобы они были инициированы (т.е. имели начальное значение, а не мусор) до начала их использования.
В С++ для упрощения процесса инициализации объектов предусмотрена специальная функция, называемая конструктором.
Конструктор – это компонентная функция, вызываемая автоматически при создании объекта класса и выполняющая необходимые инициализирующие действия.
Основное назначение – инициализация объектов.
- инициализация данных класса - задание им начальных
значений программно или по умолчанию,
- открытие файлов,
перевод видеосистемы в графический режим
вывод сообщения,
инициализация объектов вспомогательных классов и. т. д.
Имя конструкторадолжно совпадать сименем класса.
3) Функция-конструктор не может возвращать результат, даже тип void не
допустим.
4) Функция автоматическивызывается при определении объекта, или при размещении в памяти объекта с помощью операцииnew.
Формат определения конструктора в теле класса:
< имя класса> ( список формальных параметров)
{ операторы тела конструктора }
Конструктор, как и любая компонентная функция, может быть определен и вне тела класса, имея в теле класса прототип.
class T {
…
public:
T ( список параметров) ;
…
} ;
T::T( список параметров) { тело конструктора}
Как правило, конструкторы объявляются в открытой части класса
Конструктор может отсутствовать, при создании экземпляров класса
компилятор автоматически выделяет под них память, хотя в этом случае
данные не инициализируются, и будут содержать мусор.
8) В определении класса могут присутствовать несколько конструкторов.
Деструктор - это функция, которая автоматически выполняется, когда экземпляр класса уничтожается.
( либо при выходе объекта за пределы своей области видимости, либо при уничтожении динамического объекта операцией delete).
Назначение – выполнение завершающих действий (напр., закрытие файлов, установка видеосистемы в исходное состояние, написание каких-либо фраз и т.д.)
Деструктор используется, например, если объект – локальный и ему динамически выделялась память,целесообразно, чтобы при выходе из блока, когда объект перестает существовать, память была возвращена системе. Желательно, чтобы память освобождалась автоматически, операцию освобождения памяти можно включить в деструктор.
Класс может иметь несколько конструкторов, но деструктор может быть только один.
Формат компонентной функции-деструктора
~ имя класса ( ) { операторы тела деструктора};
Между тильдой и именем класса нет пробелов.
У деструктора нет типа результата даже void и нет параметров даже типаvoid.
Деструктор выполняется неявно, автоматически, как только объект уничтожается. Его, как правило, никогда не вызывают, но можно и вызывать явно, если он определен в классе
<имя объекта>. ~ <имя класса> ( );
При этом объект будет продолжать существовать, только выполняться те действия, которые записаны в теле деструктора.
Рассмотрим класс Men, несущий в себе данные о возрасте и имени индивидуума.
Пусть в этом классе присутствуют и конструктор и деструктор.
В конструкторекроме инициализирующих действий имеется еще вывод контрольной строки.
Деструкторпусть также содержит вывод другой контрольной строки.
class Men{
char* name ;
int age;
public:
Men(char * n, int a) //встроенный конструктор
{ name = n; age = a;
cout<<name << “ - begin “<<endl;
}
void SetN (char*n) {name =n ; } //комп. функция для изменения данного
void SetA (int a) { age = a ;} //комп. функция для изменения другого данного
char* GetN ( ) { return name; } // компонентные функции
int GetA { return age; } //возвращающие значения данных
~Men ( ) { cout<< name<< “- end”<<endl;} // деструктор
#include <iostream.h>
#include<conio.h>