КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Конструкторы с параметрами
Пример. Деструкторы. Конструкторы.
Функция конструктора (constructor function) имеет тоже имя, что и класс и не возвращает ни какого значения. Нельзя указывать даже void, т.к. конструктор никогда не возвращает значение. Конструктор автоматически вызывается при создании объекта (создании экземпляра класса), т.е не нужно специально вызывать конструктор - это сделает компилятор. В основном используется конструктор для автоматической инициализации создаваемых объектов в С++ и включается в описание класса. #include <iostream.h> // Объявление класса class1 class class1 { int a; public: class1(); // Конструктор void kwadrat(); }; // Инициализация а конструктором при создании объекта pr class1::class1() { a=100; } //Функция возведения в квадрат и печати void class1::kwadrat() { cout << a*a; } main() { class1 pr;//Создание объекта pr pr.kwadrat(); //Вызов функции kwadrat
return 0; }
Как видно из примера конструктор вызывается при создании объекта pr.
Функция деструктор (destructor) вызывается при удалении объекта для освобождения ресурсов (памяти и т.д.). Она также включается в объявление класса. Перед описанием деструктора ставится значок ~. #include <iostream.h> // Объявление класса class1 class class1 { int a; public: class1(); // Конструктор ~class1(); //Деструктор void kwadrat(); }; // Инициализация а конструктором при создании объекта pr class1::class1() { a=100; } //Освобождение ресурсов деструктором class1::~class1() { cout<<"Освобождение "; } //Функция возведения в квадрат и печати void class1::kwadrat() { cout << a*a<<" "; }
main() { class1 pr;//Создание объекта pr pr.kwadrat(); //Вызов функции kwadrat
return 0; }
Деструктор вызывается при удалении объекта или выхода из программы. Можно так же использовать для уничтожения объектов операции new и delete.
Конструктору можно передать параметры. Для этого нужно добавить необходимые параметры в объявление и определение конструктора. Затем при объявлении объекта параметры задаются в качестве аргумента. Пример: #include <iostream.h> class myclass { int a; public: myclass(int x); // конструктор void show(); }; myclass::myclass(int x) { cout << "В конструкторе "; a = x; } void myclass::show() { cout << a << " "; } main() { myclass ob(4); ob.show(); return 0; }
Конструктор myclass имеет один параметр. Значение, передаваемое в myclass() используется для инициализации а. Аргумент 4 передается в ob(4) в качестве аргумента. Деструктор в отличие от конструктора параметров не имеет. В данном примере конструктору мы передавали константы, но так же можно передавать переменные: Пример: #include <iostream.h> class myclass { int i, j; public: myclass(int a, int b); void show(); }; myclass::myclass(int a, int b) { i = a; j = b; }
void myclass::show() { cout << i << << j << " "; } main() { int x, y;
cout << "Введите два целых: "; cin >> x >> y;
// использование переменных для создания ob myclass ob(x, y); ob.show(); return 0; }
4.6. Указатели на объекты.
Доступ к члену объекта возможен не только через точку (.). Возможен доступ и через указатель на этот объект. В этом случае применяют стрелку (->).
Пример: #include <iostream.h> class myclass { int a; public: myclass();// myclass(int x); // конструктор int get(); }; myclass::myclass() { a=0; } myclass::myclass(int x) { a = x; } int myclass::get() { return a; }
main() { myclass ob(120); // создание объекта myclass *p; // создание указателя на объект p = &ob; // передача адреса ob в p cout << "Значение, получаемое при использовании объекта:" << ob.get(); cout << " "; cout << "Значение, получаемое при использовании указателя:" << p->get();
myclass *pn; // указатель на класс типа А pn=new myclass;//создание экземпляра класса float x=pn->get();//доступ по указателю delete pn; return 0; }
В программе объявление myclass *p создает указатель на объект myclass(а не создает объект!). Для передачи адреса ob в p используется выражение p=&ob. Для получения доступа к объекту через указатель используется выражение p->get(); В случае необходимости создания и удаления объекта можно использовать операции new и delete.
Дата добавления: 2014-01-13; Просмотров: 1432; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |