You are on page 1of 10

Конструктори и Дестрyктори

Конструктори и деструктори
Иницијализацијата на Конструктори
објектите овозможува Номенклатура: Имињата на
поголема конструкторите се
функционалност на идентични со името на
програмите класата.
Уништувањето на Повик: Конструкторите се
објектите исто така повикуваат секогаш кога се
овозможува поголема креира објект од таа класа
функционалност Во C++ Повратна вредност: Овие
овие дејства се методи немаат повратни
овозможени преку вредности!
механизмите на Една класа може да има
class moja_klasa
{
int a;
public:
moja_klasa(); //конструктор
void pokazhi();
};
moja_klasa::moja_klasa()
{
cout<<"Vo konstruktorot\n";
a=10;
}
void moja_klasa::pokazhi(){
cout<<a;
} Излез:
main() Vo konstruktorot
{ 10
moja_klasa ob;
ob.pokazhi();
}
Иницијализација со помош на конструктори

● а се иницијализира со помош на конструкторот на moja_klasa().


● Конструкторот се повикува кога се создава објектот ob
● Конструкторот не враќа вредност
● По создавањето на објектот следи неговата иницијализација.
● Иницијализацијата се прави преку функцијата конструктор
● Ова му овозможува на програмерот да ги добие почетните
вредности на членовите на објектот.
● Глобалните објекти го викаат конструкторот еднаш, на почетокот
на програмот. Кај локалните објекти, конструкторот се вика при
секоја наредба за декларација на објект. Конструкторите се
користат како функции на иницијализација и се замена за set()
функциите.
Деструктор
● Деструкторот е ● Номенклатура: Името на
функција која се вика деструкторот е исто со името
при уништување на на класата, плус претставката
објектот Објектите ~ (пр. ~moja_klasa)
кои алоцираат ● Повик: деструкторот се
меморија треба да ја повикува автоматски, при
ослободат при уништување на објектот
нивното уништување. ● Повратна вредност:
Ова се постигнува со Деструкторот нема повратна
повик на вредност
деструкторот. ● Има само по еден деструктор за
секоја класа.
class moja_klasa {
int a;
int main()
public:
{
moja_klasa(); //конструктор
moja_klasa ob;
~moja_klasa(); //деструктор
ob.pokazhi();
void pokazhi();
}
};
moja_klasa::moja_klasa()
{
cout<<“Vo konstruktorot\n";
a=10;
}
moja_klasa::~moja_klasa() Излез:
{ Vo konstruktorot
cout<<“Vo destruktorot...\n"; 10
} Vo destruktorot...
void moja_klasa::pokazhi()
{
cout<<a<<endl;}
Подразбирлив конструктор Параметризирани
на класата конструктори

Конструкторот што не прима параметри се


нарекува подразбирлив (default) конструктор. Конструкторите (како и сите
Доколку кодот на класата не го содржи овој други функции) можат да
конструктор, компајлерот автоматски него имаат параметри
го обезбедува. Обично параметрите се
На тој начин, класата добива најмалку еден
вредности за
конструктор, дури и ако истиот не е
иницијализирање на
експлицитно наведен.
Програмерот може и експлицитно да податочните членки на
обезбеди подразбирлив конструктор. класата Пример: во moja_klasa
Доколку програмерот обезбеди друг конструкторот треба да ја
конструктор (со параметри), иницијализира податочната
подразбирливиот конструктор нема да биде членка a.
обезбеден од страна на компајлерот.

!!! Деструкторите немаат


Пример: Подразбирлив и параметризиран конструктор
#include <iostream> moja_klasa::moja_klasa()
using namespace std; {
class moja_klasa cout<<"Vo podrazbirliviot konstruktor\n";
{ a=10;
int a; }
public: void moja_klasa::pokazhi()
moja_klasa(); //подразбирлив {
конструктор cout<<a<<endl;
moja_klasa(int x); //параметризиран }
конструктор main()
void pokazhi(); {
}; moja_klasa ob1; Излез:
moja_klasa::moja_klasa(int x) ob1.pokazhi(); Vo podrazbirliviot konstruktor
{ moja_klasa ob(4); 10
Vo parametriziraniot konstruktor
cout<<“Vo parametriziraniot ob.pokazhi(); x=4
konstruktor\n"; } 4
cout<<"x = "<<x<<endl;
Kласа со име proizvod што содржи податочни членки : Imep (string),
nab_cena(float) и функции членки: set, get и функција членка што ќе пресметува
продажна цена на производот која е за 20% поголема од набавната цена.
#include <iostream> {
#include <string> return (nab_cena+0.2*nab_cena);
using namespace std; }
class proizvod };
{ int main(){
public: string I;
string Imep; float nb;
float nab_cena ; proizvod objproizvod; cout<<"Vnesi go
void setPodatoci(string I, float nb) proizvodot "<<endl;
{ cin>>I;
Imep=I; cout<<"Vnesi ja nabavnata
nab_cena=nb; cena"<<endl;
} cin>>nb;
string getPodatoci() objproizvod.setPodatoci(I,nb);
{ cout<< “Prodaznata cena na“<<
return Imep; objproizvod.getPodatoci( )<<" e
} "<<objproizvod.cena(nb);
int cena (float nab_cena) return 0;
}
Изработено од:
Македонка
Туриманџова
IV 5

You might also like