OOП Преоптоварување на оператори C ++ ви овозможува да наведете
повеќе од една дефиниција за име на функција или оператор во истиот
опсег, што се нарекува преоптоварување на функцијата и преоптоварување
на операторот, соодветно. Преоптоварување на функциите во C ++
using namespace std; class printData { public: void print(int i) { cout << "Pecati int: " << i << endl; } void print(double f) { cout << "Pecati float: " << f << endl; } void print(char* c) { cout << "Pecati character: " << c << endl; } };
int main(void) { printData pd; // Povikuva funkcija print da pecati integer pd.print(5); // Povikuva funkcija print da pecati float pd.print(500.263); // Povikuva funkcija print da pecati character pd.print("Zdravo na site! Ova e overload - preoptovaruvanje na funkcija."); return 0; }
Преоптоварување на операторите во C ++ Може да ги редефинирате или преоптоварите повеќето вградени оператори достапни во C ++ и можете да ги користите тие оператори со ваши дефинирани типови. Преоптоварените оператори се функции со посебни имиња: клучниот збор „оператор“ проследен со симболот за операторот што се дефинира. Како и секоја друга функција, преоптоварен оператор има тип на податок што треба да се врати и листа на параметри. Пример 2
Да се дефинира класа за работа со комплексни броеви. За
секој комплексен број се чуваат податоци за реалниот и
имагинарниот дел.
Да се преоптоварат операторите +, ++ за
извршуваање на содветните операции со комплексни броеви.
//Да се имплементира операторот << за печатење на
комплексен број.
using namespace std; class Kompleksen{ private: int r; int i;
public: void setR(int a){ r=a; } void setI(int b){ i=b; } int getR(){ return r; } int getI(){ return i; } Kompleksen(int x=0, int y=0){ r=x; i=y; } //~Kompleksen(){ //cout<<"Ova e destruktor na :"<<this<<endl; //}
Kompleksen(const Kompleksen &izvor){ r=izvor.r; i=izvor.i; } Kompleksen operator+(Kompleksen &sobirok); Kompleksen operator++(); Kompleksen operator++(int); };
//////////////////////////////////////////////////////////
Kompleksen Kompleksen ::operator+(Kompleksen & sobirok){ Kompleksen temp; temp.r=r + sobirok.r; temp.i=i+ sobirok.i; return temp; } Kompleksen Kompleksen::operator++(){ Kompleksen temp; temp.r=++r; temp.i=++i; return temp; } Kompleksen Kompleksen::operator++(int x){ Kompleksen temp; temp.r=r++; temp.i=i++; return temp; }
int main(int argc, char *argv[]) { Kompleksen a(2,3),b(5,6),d; d=a; cout<<a.getR()<<endl; cout<<a.getI()<<endl; d=a+b; cout<<d.getR()<<endl; cout<<d.getI()<<endl; return 0;
}
Да се дефинира класа Kutija
со должина, ширина и висина.
Вредностите на трите аргументи да се внесат од тастатура
и да се предадат на класата со функции. Да се преоптовари операторот
+ .
Да се имплементира функција за пресметка на волумен. #include <iostream> using namespace std; class Kutija { private: double dolzina; // dolzina na K double sirina; // sirina na K double visina; // visina na K public: double getVolumen(void) { return dolzina * sirina * visina; } void setDolzina ( double dol ) { dolzina = dol; } void setSirina ( double sir ) { sirina = sir; } void setVisina ( double vis ) { visina = vis; } // Overload + operator da sobere dva objekti od tipot Kutija . Kutija operator+(const Kutija& b) { Kutija K; K.dolzina = this->dolzina + b.dolzina; K.sirina = this->sirina + b.sirina; K.visina = this->visina + b.visina; return K; } }; // Main funkcija int main() { Kutija Kutija1; // Deklaracija na Kutija1 od tip Kutija Kutija Kutija2; // Deklaracija na Kutija2 od tip Kutija Kutija Kutija3; // Deklaracija na Kutija3 od tip Kutija double volumen = 0.0; // promenliva za volumen na K // Kutija1 specifikacii Kutija1.setDolzina(6.0); Kutija1.setSirina(7.0); Kutija1.setVisina(5.0); // Kutija2 specifikacii Kutija2.setDolzina(12.0); Kutija2.setSirina(13.0); Kutija2.setVisina(10.0); // volumen na Kutija1 volumen = Kutija1.getVolumen(); cout << "Volumen na Kutija1 : " << volumen <<endl; // volumen na Kutija2 volumen = Kutija2.getVolumen(); cout << "Volumen na Kutija2 : " << volumen <<endl; // Sobiranje na dva objekti : Kutija3 = Kutija1 + Kutija2; // volumen na Kutija3 volumen = Kutija3.getVolumen(); cout << "Volumen na Kutija3 : " << volumen <<endl; return 0; }
|