Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции заочникам урезанный вариант.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
644.1 Кб
Скачать

4.3. Конструкторы.

Функция конструктора (constructor function) имеет тоже имя, что и класс и не возвращает ни какого значения. Нельзя указывать даже void , т.к. конструктор никогда не возвращает значение.

Конструктор автоматически вызывается при создании объекта (создании экземпляра класса), т.е не нужно специально вызывать конструктор - это сделает компилятор.

В основном используется конструктор для автоматической инициализации создаваемых объектов в С++ и включается в описание класса.

#include <iostream.h>

// Объявление класса class1

class class1

{

int a;

public:

class1(); // Конструктор

void kwadrat();

};

// Инициализация а конструктором при создании объекта pr

class1::class1()

{

a=100;

}

//Функция возведения в квадрат и печати

void class1::kwadrat()

{

cout << a*a;

}

main()

{

class1 pr;//Создание объекта pr

pr.kwadrat(); //Вызов функции kwadrat

return 0;

}

Как видно из примера конструктор вызывается при создании объекта pr.

4.4. Деструкторы.

Функция деструктор (destructor) вызывается при удалении объекта для освобождения ресурсов (памяти и т.д.). Она также включается в объявление класса. Перед описанием деструктора ставится значок ~.

Пример.

#include <iostream.h>

// Объявление класса class1

class class1

{

int a;

public:

class1(); // Конструктор

~class1(); //Деструктор

void kwadrat();

};

// Инициализация а конструктором при создании объекта pr

class1::class1()

{

a=100;

}

//Освобождение ресурсов деструктором

class1::~class1()

{

cout<<"Освобождение\n";

}

//Функция возведения в квадрат и печати

void class1::kwadrat()

{

cout << a*a<<"\n";

}

main()

{

class1 pr;//Создание объекта pr

pr.kwadrat(); //Вызов функции kwadrat

return 0;

}

Деструктор вызывается при удалении объекта или выхода из программы. Можно так же использовать для уничтожения объектов операции new и delete.

4.5. Конструкторы с параметрами.

Конструктору можно передать параметры. Для этого нужно добавить необходимые параметры в объявление и определение конструктора. Затем при объявлении объекта параметры задаются в качестве аргумента.

Пример:

#include <iostream.h>

class myclass

{

int a;

public:

myclass(int x); // конструктор

void show();

};

myclass::myclass(int x)

{

cout << "В конструкторе\n";

a = x;

}

void myclass::show()

{

cout << a << "\n";

}

main()

{

myclass ob(4);

ob.show();

return 0;

}

Конструктор myclass имеет один параметр. Значение, передаваемое в myclass() используется для инициализации а. Аргумент 4 передается в ob(4) в качестве аргумента. Деструктор в отличие от конструктора параметров не имеет.

В данном примере конструктору мы передавали константы, но так же можно передавать переменные:

Пример:

#include <iostream.h>

class myclass {

int i, j;

public:

myclass(int a, int b);

void show();

};

myclass::myclass(int a, int b)

{

i = a;

j = b;

}

void myclass::show()

{

cout << i << ' ' << j << "\n";

}

main()

{

int x, y;

cout << "Введите два целых: ";

cin >> x >> y;

// использование переменных для создания ob

myclass ob(x, y);

ob.show();

return 0;

}