Студопедия

КАТЕГОРИИ:


Архитектура-(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; Просмотров: 1394; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.