// Определение класса queue.
class queue {
int q[100];
int sloc, rloc;
public:
queue(); // конструктор
void qput(int i);
int qget();
};
Обратите внимание на то, что в объявлении конструктора
Теперь приведем код функции
// Определение конструктора.
queue::queue()
{
sloc = rloc = 0;
cout << "Очередь инициализирована.\n";
}
В данном случае при выполнении конструктора выводится сообщение
Конструктор объекта вызывается при создании объекта. Это означает, что он вызывается при выполнении инструкции объявления объекта. Конструкторы глобальных объектов вызываются в самом начале выполнения программы, еще до обращения к функции main(). Что касается локальных объектов, то их конструкторы вызываются каждый раз, когда встречается объявление такого объекта.
Деструктор —
Дополнением к
Рассмотрим уже знакомый нам класс
// Определение класса queue.
class queue {
int q[100];
int sloc, rloc;
public:
queue(); // конструктор
~queue(); // деструктор
void qput(int i);
int qget();
};
// Определение конструктора.
queue::queue()
{
sloc = rloc = 0;
cout << "Очередь инициализирована.\n";
}
// Определение деструктора.
queue::~queue()
{
cout << "Очередь разрушена.\n";
}
Вот как выглядит новая версия программы реализации очереди, в которой демонстрируется использование конструктора и деструктора.
// Демонстрация использования конструктора и деструктора.
#include
using namespace std;
// Определение класса queue.
class queue {
int q[100];
int sloc, rloc;
public:
queue(); // конструктор
~queue(); // деструктор
void qput(int i);
int qget();
};
// Определение конструктора.
queue::queue()
{
sloc = rloc = 0;
cout << "Очередь инициализирована.\n";
}
// Определение деструктора.
queue::~queue()
{
cout << "Очередь разрушена.\n";
}
// Занесение в очередь целочисленного значения.
void queue::qput(int i)
{
if(sloc==100) {
cout << "Очередь заполнена.\n";
return;
}
sloc++;
q[sloc] = i;
}
// Извлечение из очереди целочисленного значения.
int queue::qget()
{
if(rloc == sloc) {
cout << "Очередь пуста.\n";
return 0;
}
rloc++;
return q[rloc];
}
int main()
{