В приведенной ниже программе класс queue иллюстрируется полностью (для этого объединены все уже знакомые вам части кода и добавлены недостающие детали).
#include <iostream>
using namespace std;
// Создание класса queue.
class queue {
int q[100];
int sloc, rloc;
public:
void init();
void qput(int i);
int qget();
};
// Инициализация класса queue.
void queue::init()
{
rloc = sloc = 0;
}
// Занесение в очередь целочисленного значения.
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()
{
queue a, b; // Создание двух объектов класса queue.
а.init();
b.init();
a.qput(10);
b.qput(19);
a.qput(20);
b.qput(1);
cout << "Содержимое очереди a: ";
cout << a.qget() << " ";
cout << a.qget() << "\n";
cout << "Содержимое очереди b: ";
cout << b.qget() << " ";
cout << b.qget() << "\n";
return 0;
}
При выполнении эта программа генерирует такие результаты.
Содержимое очереди а: 10 20
Содержимое очереди b: 19 1
Не забывайте, что закрытые члены класса доступны только функциям, которые являются членами этого класса. Например, такую инструкцию
а.rloc = 0;
нельзя включить в функцию main() нашей программы.
Все классы объявляются подобно приведенному выше классу queue. Общий формат объявления класса имеет следующий вид.
class имя_класса {
закрытые данные и функции
public:
открытые данные и функции
} список_объектов;
Здесь элемент имя_класса означает имя класса. Это имя становится именем нового типа, которое можно использовать для создания объектов класса. Объекты класса можно создать путем указания их имен непосредственно за закрывающейся фигурной скобкой объявления класса (в качестве элемента список_объектов), но это необязательно. После объявления класса его элементы можно создавать по мере необходимости.
Получение доступа к членам класса — вот что часто приводит в замешательство начинающих программистов. Поэтому остановимся на этой теме подробнее. Итак, рассмотрим следующий простой класс.
// Демонстрация доступа к членам класса.
#include <iostream>
using namespace std;
class myclass {
int a; // закрытые данные
public:
int b; // открытые данные
void setab(int i); // открытые функции
int geta();
void reset();
};
void myclass::setab(int i)
{
a = i; // прямое обращение к переменной а