|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
КонструкторыB отличии от предыдущего примера удобнее инициализировать поля объекта автоматически в момент его создания, а не явно вызовом соответствующего метода. Такой способ реализуется с помощью особого метода класса, называемого конструктором. Конструктор - это метод, выполняющийся автоматически в момент создания объекта. Конструктор отличается от других методов: 1) Имя конструктора совпадает с именем класса; 2) У конструктора не существует возвращаемого значения. Заменим метод InitPoint() на конструктор: class TPoint { private: int x,y; public: TPoint(int newx, int newy) // конструктор { x=newx; y=newy; } void relmove (int dx, int dy) {x+= dx; y += dy; } int getx (void) { return x; } int gety (void) { return y; } }; int main(int argc, char *argv[]) { class TPoint p(10,10); //инициализация объекта р printf("x=%d, y=%d\n", p.getx(), p.gety()); ... } В качестве второго примера создадим класс Counter, объекты которого могут хранить количественную меру какой-либо изменяющейся величины. При наступлении некоторого события счетчик увеличивается на единицу. Обращение к счетчику происходит, как правило, для того, чтобы узнать текущее значение той величины, для изменения которой он предназначен. #include "stdafx.h" #include "iostream" class Counter { private: int count; public: Counter ():count(0){ } //конструктор void inc_count ()//метод увеличения счетчика на 1 {count++; } int get_count()//метод возвращает значение счетчика { return count; } }; int _tmain(int argc, _TCHAR* argv[]) { Counter c1, c2;//создание объектов c1 и c2 std::cout<<c1.get_count()<<std::endl; std::cout<<c2.get_count()<<std::endl; c1.inc_count(); c1.inc_count(); //увеличение с1 на 2 c2.inc_count(); //увеличение с2 на 1 std::cout<<c1.get_count()<<std::endl; std::cout<<c2.get_count()<<std::endl; return 0;} Результаты программы приведены на рисунке 2.3. Рисунок 2.3. – Результаты работы программы Одной из наиболее часто возлагаемых на конструктор задач является инициализация полей объекта. Инициализация полей обычно реализуется с помощью списка инициализации, который располагается между заголовком и телом функции-конструктора. После заголовка ставится двоеточие. Инициализирующие значения помещены в круглые скобки после имени поля. Counter ():count(0) {/* тело функции*/ } Если инициализируются несколько полей, то значения разделяются запятыми. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |