Professional Documents
Culture Documents
Intro in C Language
Intro in C Language
КОНСТРУКТОРИ И ДЕСТРУКТОРИ
1. Цел на упражнението
Усвояване на умения за работа с управляващи методи на
класовете - конструктори и деструктори.
1
дефиниран даден обект или при използване на операция delete с
указател към такъв обект. Деструкторът носи името на класа,
предшествано от символа "~" (tilt). Както и при конструкторите
деструкторът не може да връща резултат и не се посочва тип на
резултата в заглавието му. По дефиниция деструкторът е функция без
аргументи и следователно за един клас не може да се дефинира повече
от един деструктор.
В тялото на деструктора се включват операции за освобождаване
на паметта, заета за данните на обекта, както и всички действия, които
трябва да се извършат преди напускане областта на действие на даден
обект. Деструкторите могат да извършват различни допълнителни
действия, като например отпечатване на съобщения в определени
контролни точки.
3. Задачи за изпълнение
Задача 1:
Да се добави метод към класа ОneData от фиг. 3.1, който ще
връща квадрата dataStore. Да се добавят в главната програма
оператори за извеждане на изчислената стойност.
Задача 2:
Към класа ОneData да се добави конструктор за инициализиране
със стойност по подразбиране. В главната програма да се добавят
оператори за извеждане на инициализираната стойност.
Задача 3:
Да се замени функцията initialize на класа Rectangle (фиг. 3.2) с
конструктор и да се добави деструктор на същия клас. Да се добавят
оператори за извеждане на съобщения в конструктора и в деструктора
на класа Rectangle, които да сигнализират входа и изхода в/от областта
на действие на класа.
Задача 4:
Към класа IntArray (фиг. 3.3.) да се дефинира конструктор с
аргумент размера на масива, който да заделя памет за масива и да
инициализира неговите елементи с определена стойност. Да се
дефинира конструктор с аргумент обект от клас IntArray, който да
копира елементите на аргумента в елементите на текущия обект. Да се
дефинира деструктор, който да освобождава заетата от масива памет.
Задача 5:
Към класа IntArray да се дефинират следните методи: за задаване
стойности на елементите на масива; за извеждане стойностите на
2
елементите на масива; за търсене на минимален елемент и за
сортиране елементите на масива по метода на мехурчето.
Задача 6:
Да се декларира клас, който съхранява лично, бащино и фамилно
име и връща пълното име на лицето в един от следните формати:
Иван Павлов Димитров
И.П.Димитров
Димитров, Иван П.
или какъв да е друг формат по избор.
#include <iostream.h
class ОneData
{
public:
void set(int inValue);
int getValue(void);
private:
int dataStore;
}; // end OneData
3
class Rectangle
{
public:
int area( void );
void initialize( int, int );
private:
int height;
int width;
};
Фиг. 3.2.
class IntArray
{
public:
IntArray(int sz = ARRAY_SIZE); //конструктор с аргумент размера на масива
IntArray( const IntArray& ); // конструктор с аргумент обект от клас IntArray
~IntArray(); // деструктор
void loadArray( void ); // задаване стойности за елементите на масива
void showArray( void ); // извеждане стойностите на елементите
int findMin( void ); // търсене на минимален елемент
void sortArray( void ); // сортиране по метода на мехурчето
int getSize( void ) { return size; } // връща размера на масива
int *getPtr( void ) { return ia; }
private:
int size;
int *ia;
};
Фиг. 3.3