1. for va foreach sikllari


Operatorlarni metodlar orqali qayta yuklash


Download 65.67 Kb.
bet20/49
Sana19.06.2023
Hajmi65.67 Kb.
#1625730
1   ...   16   17   18   19   20   21   22   23   ...   49
Bog'liq
дəстурлеу жуаплары100

27. Operatorlarni metodlar orqali qayta yuklash
Operatorlarni metodlar orqali qayta yuklash (operator overloading) C++ tilida sinfning obyektiga mos funksiyalar yaratish imkoniyatini beradi. Bu usul operatorlar orqali ishlashdan farqli ravishda sinfning obyektlari uchun mos funksiyalarni yaratish imkoniyatini beradi.
Misol uchun, quyidagi kodda Complex sinfiga + operatoriga mos funksiya metod yordamida yaratilgan:
cpp
#include
using namespace std;
class Complex {
private:
int real;
int imag;
public:
Complex(int r = 0, int i = 0) {
real = r;
imag = i;
}
Complex operator+(Complex const &obj) {
Complex res;
res.real = real + obj.real;
res.imag = imag + obj.imag;
return res;
}
void print() {
cout << real << " + i" << imag << endl;
}
};
int main() {
Complex c1(10, 5), c2(2, 4);
Complex c3 = c1 + c2;
c3.print();
return 0;
}
Bu kodda Complex sinfiga + operatoriga mos funksiya operator+ nomi bilan yaratilgan. operator+ funksiyasi Complex const &obj argumentini qabul qiladi. operator+ funksiyasi sinfning boshqa metodlari kabi chaqiriladi, ammo uni sinf obyekti orqali emas, balki metod yordamida chaqiriladi.
main funksiyasida c1 va c2 obyektlari yaratilgan va + operatori yordamida yig'ildi. Natijaviy obyekt c3 obyektiga saqlanadi. print yordamida c3 obyekti konsolda chiqariladi.
Operatorlarni metodlar orqali qayta yuklashda operatorlarga mos funksiyalar sinfning ichida yaratiladi. Bunday funksiyalarning nomi operatorlarga mos keladi, lekin funksiyalarni yaratishda operator kalit so'zi qo'llaniladi. Yaratilayotgan funksiya sinfning ichida yaratilishi uchun, sinf a'zolari (xususiyatlari) metod yordamida ishlatilishi mumkin.
28. +, -, /, * unar operatorlarni qayta yuklash
Unary operatorlar yordamida, o'zgaruvchilarni o'zgartirish va yoki boshqa amallarni bajarish mumkin. C++ dasturlash tili o'zgaruvchilarni o'zgartirish uchun qo'shimcha operatorlarni taqdim etadi, masalan ++ va --. Shuningdek, -, + operatorlari ham unar operatorlar sifatida ishlatiladi.
+ va - operatorlari unar operatorlar sifatida ishlatilganida, obyektning qiymatini o'zgartirmaydi. Ammo, qiymatlar ustida amallar bajariladi.
+ va - operatorlariga mos funksiyalar quyidagicha yaratiladi:
cpp
class Integer {
private:
int value;
public:
Integer(int v = 0) {
value = v;
}
Integer operator+() {
return Integer(+value);
}
Integer operator-() {
return Integer(-value);
}
void print() {
cout << "Value: " << value << endl;
}
};
int main() {
Integer a(5);
Integer b = +a;
Integer c = -a;
a.print();
b.print();
c.print();
return 0;
}
Bu kodda Integer sinfiga + va - operatorlari yaratilgan. + operatoriga mos funksiya operator+ nomi bilan yaratilgan. operator+ funksiyasi value qiymatini o'zgartirmaydi va uni to'g'ri qaytaradi. - operatoriga mos funksiya esa operator- nomi bilan yaratilgan. operator- funksiyasi value qiymatini neg qiymatiga o'zgartiradi va uni to'g'ri qaytaradi.
main funksiyasida a obyekti yaratilgan, va + va - operatorlari yordamida qiymatlar ustida amallar bajarilgan. Konsolda obyektlarning qiymatlari chiqariladi.
* va / operatorlari ham unar operatorlar sifatida ishlatilishi mumkin. Ammo, ularga mos funksiyalar yaratish uchun doimiy ko'rsatmalarni o'zgartirish kerak.

Download 65.67 Kb.

Do'stlaringiz bilan baham:
1   ...   16   17   18   19   20   21   22   23   ...   49




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling