Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Пример класса
Ниже приведен пример описания класса Банковского счета: 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).
|