double arrow
Лекция 3. Конструктор и деструктор

2

Class employee

Primer 3 Лекция 3.

Представление о деструкторе.

Do

{

cout << "Введите оклад для " << name << " меньше $50000: ";

cin >> employee::salary;

}

while (salary >= 50000.0);

}

int employee::show_employee()

{

cout << "Служащий: " << name << endl;

cout << "Номер служащего: " << employee_id << endl;

cout << "Оклад: " << salary << endl;

}

int main()

{

system("chcp 1251");

employee worker("Савин", 101, 1000);

employee manager("Нагеь", 102);

worker.show_employee();

manager.show_employee();

system("pause");

}

В случае деструктора его имя предваряется символом тильды (~):

~class_name (void) //указывает деструктор
 
{
// Операторы деструктора
}

highlightSyntax('cpp_73341','cpp');

Следующая программа определяет деструктор для класса employee:

void employee:: ~employee(void)
 
{
cout << "Уничтожение объекта для " << name << endl;
}
 

highlightSyntax('cpp_91448','cpp');

#include <iostream>

#include <string.h>

using namespace std;

{

public:

employee(char *, long, float);

~employee();

int show_employee();

int change_salary(float);

long get_id(void);

private:

char name [64];

long employee_id;

float salary;

};

employee::employee(char *name, long employee_id, float salary)

{

strcpy(employee::name, name);

employee::employee_id = employee_id;

if (salary < 50000.0) employee::salary = salary;

else // Недопустимый оклад

employee::salary = 0.0;

}

int employee::show_employee()

{

cout << "Служащий: " << name << endl;

cout << "Номер служащего: " << employee_id << endl;

cout << "Оклад: " << salary << endl;

}

employee::~employee()

{

cout << "Уничтожение объекта для " << name << endl;

}

int main()

{

system("chcp 1251");

employee worker("Савин", 101, 10000.0);




worker.show_employee();

worker.~employee();

system("pause");

}

При создании объектов одной из наиболее широко используемых операций, которую выполняется в программах, является инициализация элементов данных объекта. Единственным способом, с помощью которого можно обратиться к частным элементам данных, является использование функций класса. Чтобы упростить процесс инициализации элементов данных класса, C++ использует специальную функцию, называемую конструктором, которая запускается для каждого создаваемого объекта. Функция, запускаемая при уничтожении объекта, называется деструктором.
Конструктор - функция, которая помогает строить (конструировать) объект. Деструктор представляет собой функцию, которая помогает уничтожать объект. Деструктор обычно используется, если при уничтожении объекта нужно освободить память, которую занимал объект.

3.1. Создание простого конструктора.



Конструктор представляет собой метод класса, который имеет такое же имя, как и класс. Если программа определяет конструктор, C++ будет автоматически вызывать его каждый раз, когда вы создаете объект. Следующая программа создает класс с именем employee, определяет конструктор с именем employee, который присваивает начальные значения объекту. Конструктор не возвращает никакого значения, несмотря на то, что он не объявляется как void. Просто не указываете тип возвращаемого значения:

class employee
{
public:
employee(char *, long, float); //Конструктор
void show_employee(void);
int change_salary(float);
long get_id(void);
private:
char name [64];
long employee_id;
float salary;
};

highlightSyntax('cpp_70195','cpp'); В программе конструктор определяется так же, как любой другой метод класса:

employee::employee(char *name, long employee_id, float salary)
{
strcpy(employee::name, name);
employee::employee_id = employee_id;
if (salary < 50000.0)
employee::salary = salary;
else // Недопустимый оклад
employee::salary = 0.0;
}

highlightSyntax('cpp_45860','cpp'); Конструктор не возвращает значение вызвавшей функции. Для него также не используется тип void. Конструктор использует оператор глобального разрешения и имя класса перед именем каждого элемента.

Primer 1 Лекция 3.

#include <iostream>

#include <string.h>

using namespace std;

2





Сейчас читают про: