Читайте также:
|
|
Ниже приведен пример описания класса Банковского счета:
01: class Account // БанковскийСчет
02: {
03: public:
04: Account(int number): // конструктор
05: accountNumber(number), amount(0)
06: {}
07: ~Account() {} // деструктор
08: void deposit(float sum); // положить на счет
09: void withdraw(float sum); // снять со счета
10: float balance() { // проверить баланс
11: return amount;
12: }
13: protected:
14: float amount; // сумма на счете
15: private:
16: long accountNumber; // номер счета
17: };
18: void Account::deposit(float sum) {
19: amount += sum;
20: }
21: void Account::withdraw(float sum) {
22: amount -= sum;
23: }
24: void main() {
25: Account a(12345L);
26: a.deposit(1000);
27: a.withdraw(300);
28: cout << a.balance();
29: }
Имя класса задается в строке 1, в открытой области видимости задаются конструктор и деструктор класса. Эти методы вызываются при создании и уничтожении экземпляров класса.
Конструктор определяет, каким образом новый объект типа класса будет создан, как будет проводиться выделение памяти и инициализация объекта. Его определение может включать инструкции для выделения памяти, присваивания значений элементам, преобразование типов, и все что угодно, необходимое для данного класса. Конструктор имеет то же имя, что и класс (строка 4). При вызове конструктора при помощи операции ':' после заголовка функции, и перед телом функции можно вызвать конструктор базового класса (родителя) или инициализировать собственные переменные (строка 5). В данном примере тело конструктора (строка 6) не содержит никаких операторов или вызовов функций.
Деструкторы уничтожают объекты класса, созданные перед этим конструктором, очищая значения и освобождая память. Деструкторы наследуют имена своих классов, с добавлением лидирующего знака тильда '~' (строка 7).
В строках 8 и 9 объявлены два метода класса не возвращающих значение (void) и принимающих один параметр. В строках 10-12 объявляется функция balance и, также, и определяется, так как там же задано и тело функции (внутреннее или inline определение).
Далее в строках 13-16 задаются два атрибута, один из которых является приватным. В строках 18-20 задается тело функции для метода deposit (аналогично в строках 21-23 – для withdraw). Обратите внимание на использование операции селектор области действия '::' между определяемым классом и функцией элементом. Имя класса Account используется для указания компилятору, к какому классу принадлежит withdraw (так как могут иметься и другие варианты withdraw, принадлежащие другим классам).
Далее в функции main создается переменная a типа Account с параметром, который передается функции-конструктору (строка 25) и вызываются методы класса deposit и withdraw (для вызова метода используется точка '.') – строки 26 и 27. В строке 28 баланс счета выводится на экран с использованием потока вывода cout (для работы с потоками необходимо подключить заголовочный файл iostream.h).
Дата добавления: 2015-11-04; просмотров: 33 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Сущности и Объекты | | | Создание объектов. Конструкторы и деструктор |