Пример определения класса в С++ представлен текстом 3.1.
classDatum
{
public: // Объявляются три общих члена класса:
intget_x(); // целая функция-член класса Datum
Datum(); // и два конструктора функций с одинаковыми Datum(int); // именами, но различными аргументами.
private:
intx; // Объявление частной переменной класса
};
intDatum::get_x() // Определение функции get_x() – члена
{ returnx; } // класса Datum , которая передает значение x.
Datum::Datum() {x = 0} // Определения двух
Datum::Datum(intarg_x) {x = arg_x} // конструкторов класса
voidtest() // Использование объявленных и определенных объектов:
{
Datuma_datum; // Объявление новых видов
Datumanother_datum(23); // данных и распределение
Datum *DatumPtr = newDatum(23);// целочисленного массива.
int val = a_datum.get_x(); // Получение х из первого и
int val1 = DatumPtr->get_x(); // третьего наборов данных.
delete DatumPtr; //Удаление образца массива
}
Приведенный текст поясняет различные особенности механизма класса С++. Этот фрагмент программы определяет класс с именем Datum, содержащий данное с именем х, которое является членом класса, функцию Datum::get_x, которая является членом этого класса, и два конструктора функций (Datum::Datum).
Функция test иллюстрирует использование класса. В пределах определения Datum::get_x можно прямо обратиться к компоненту данных x, так как x и get_x представлены конкретным текстом в определении класса. Для функции get_x можно также включать ее определение непосредственно в определении класса, следующим образом:
public:
int get_x() { return x; };
...
Функции-члены, имеющие имя Datum, являются конструкторами функций для класса Datum. Конструктор класса вызывается всегда, когда создается новый объект класса. Конструкторы функций используются для инициализации (присвоения переменным значений перед вычислением) и могут перезагружаться. Перед именами вновь создаваемых объектов класса соответствующего типа всегда приписывается имя базового класса.
Функция test в тексте 3.1 создает и использует три объекта Datum, два из которых объявлены на первых двух строках тела функции test. В отличие от С++ для использования имени класса Datum в C мы должны были бы записать struct Datum. В третьей строке используется оператор new, чтобы распределить третий объект Datum.
Конструктор без аргументов, именуемый конструктором по умолчанию, вызывается при создании объекта с именем a_datum. В нем уже задано значение для x, равное нулю. Объявленные операторы another_datum и new определены с целочисленным параметром и, согласно второму конструктору, инициализируют переменную x = 23.
Для обращения к полям структуры в языке С используют составной идентификатор с точкой (struct.fieldname), а в С++ используют указатель-стрелку (structptr->fieldname). Такие же лексические конструкции могут использоваться и при обращении к функциям-членам класса в C++, как показано в функции test.
В классах C++ предусмотрен также механизм поддержки сохранности введенного класса. Так, члены класса C++ могут быть обозначены как общими (public), так и частными (private). Общий элемент класса может использоваться без ограничения в любой программе, в которой имеется ссылка на переменную-образец класса. При этом общие функции-члены класса могут вызываться, а компоненты общих данных можно читать или записывать. К частным же членам класса можно обращаться только из объекта, принадлежащего классу. К частным компонентам данных можно обращаться только посредством функции класса с соответствующими компонентами и, наконец, частные функции-члены могут быть вызваны только другой функцией-членом класса. Например, переменная x в классе Datum является частной переменной и, следовательно, к ней можно обращаться функцией-членом get_x, но нельзя непосредственно упомянуть эту переменную как a_datum.x.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.