Operatör Nedir??
Operatör, derleyiciye belirli bir işlemi gerçekleştirmesini belirten bir semboldür. Örneğin, C++'da Aritmetik Operatörler, Mantıksal Operatörler, İlişkisel Operatörler, Atama Operatörleri, Bitsel Operatörler ve daha fazlası gibi çeşitli operatör türleri vardır.
Operatör Aşırı Yüklemesi Nedir??
C++ dili, programcıların operatörlere özel anlamlar vermesini sağlar. Bu, C'de kullanıcı tanımlı veri türleri için operatörü yeniden tanımlayabileceğiniz anlamına gelir++. Örneğin, int, float, vb. gibi yerleşik veri türleri eklemek için “+” kullanılır. İki tür kullanıcı tanımlı veri eklemek için “+” operatörünü aşırı yüklemek gerekir.
Operatör Aşırı Yüklemesi için Sözdizimi
C++, operatör aşırı yüklemesi için "operatör" adı verilen özel bir işlev sağlar. Operatör aşırı yüklemesi için sözdizimi aşağıdadır:
sınıf örneğiSınıf…
Halka açık:
returnType operatör sembolü (argümanlar)
…
…
;
Burada “operatör” bir anahtar kelimedir ve “sembol” aşırı yüklemek istediğimiz operatördür.
Örnekler
Operatör aşırı yüklemesinin genel kavramını anladığınıza göre, bu fikri daha somut olarak anlamanız için birkaç örnek program üzerinden geçelim. Aşağıdaki örnekleri ele alacağız:
- Örnek 1: Tekli Operatör Aşırı Yüklemesi (1)
- Örnek 2: Tekli Operatör Aşırı Yüklemesi (2)
- Örnek 3: İkili Operatör Aşırı Yüklemesi
- Örnek 4: İlişkisel Operatör Aşırı Yüklemesi
Örnek 1: Tekli Operatör Aşırı Yüklemesi (1)
Bu örnekte, tekli bir operatörün C'de nasıl aşırı yüklenebileceğini göstereceğiz++. Hem önek hem de sonek artış operatörlerini aşırı yüklemek için “Square_Box” sınıfını ve “operator ++ ()” ve “operator ++ (int)” genel işlevlerini tanımladık. “main()” fonksiyonunda “mySquare_Box1” nesnesini yarattık.” Ardından, tekli operatörün aşırı yüklenmesini göstermek için “mySquare_Box1” nesnesine önek ve sonek artış operatörlerini uyguladık.
#Dahil etmekad alanı std kullanarak;
sınıf Kare_Kutu
özel:
şamandıra uzunluğu;
yüzer genişlik;
yüzer yükseklik;
halka açık:
Kare kutu()
Square_Box(kayan l, kayan w, kayan h)
uzunluk = l;
genişlik = w;
yükseklik = h;
// Operatör Aşırı Yüklemesi - "++" önek operatörü
geçersiz operatör ++ ()
uzunluk++;
genişlik++;
yükseklik++;
// Operatör Aşırı Yüklemesi - "++" postfix operatörü
geçersiz operatör ++ (int)
uzunluk++;
genişlik++;
yükseklik++;
geçersiz çıktı()
cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;
;
int ana()
Square_Box mySquare_Box1(3.0, 5.0, 6.0);
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.çıktı();
mySquare_Box1++;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.çıktı();
++mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.çıktı();
0 döndür;
Örnek 2: Tekli Operatör Aşırı Yüklemesi (2)
Bu, bir tekli operatörün C'de nasıl aşırı yüklenebileceğini göstereceğimiz başka bir örnektir++. Hem önek hem de sonek azaltma operatörlerini aşırı yüklemek için “Square_Box” sınıfını ve “operator - ()” ve “operator - (int)” genel işlevlerini tanımladık. “main()” fonksiyonunda “mySquare_Box1” nesnesini oluşturduk. Ardından önek ve sonek azaltma operatörlerini “mySquare_Box1” nesnesine uyguladık.
#Dahil etmekad alanı std kullanarak;
sınıf Kare_Kutu
özel:
şamandıra uzunluğu;
yüzer genişlik;
yüzer yükseklik;
halka açık:
Kare kutu()
Square_Box(kayan l, kayan w, kayan h)
uzunluk = l;
genişlik = w;
yükseklik = h;
// Operatör Aşırı Yüklemesi - "--" önek operatörü
geçersiz operatör -- ()
uzunluk--;
Genişlik--;
yükseklik--;
// Operatör Aşırı Yüklemesi - "--" postfix operatörü
void operatörü -- (int)
uzunluk--;
Genişlik--;
yükseklik--;
geçersiz çıktı()
cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;
;
int ana()
Square_Box mySquare_Box1(3.0, 5.0, 6.0);
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.çıktı();
mySquare_Box1--;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.çıktı();
--mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.çıktı();
0 döndür;
Örnek 3: İkili Operatör Aşırı Yüklemesi
Şimdi, ikili operatör aşırı yükleme örneğine bakacağız. İkili operatör aşırı yüklemesinin sözdizimi, tekli operatör aşırı yüklemesinden biraz farklı olacaktır. Bu örnekte, iki “Square_Box” nesnesi eklemek için “+” operatörünü aşırı yükleyeceğiz.
#Dahil etmekad alanı std kullanarak;
sınıf Kare_Kutu
özel:
şamandıra uzunluğu;
yüzer genişlik;
yüzer yükseklik;
halka açık:
Kare kutu()
Square_Box(kayan l, kayan w, kayan h)
uzunluk = l;
genişlik = w;
yükseklik = h;
// Operatör Aşırı Yüklemesi - "+" operatörü
Square_Box operatörü + (const Square_Box& nesne)
Square_Box sıcaklığı;
sıcaklık.uzunluk = uzunluk + nesne.uzunluk;
sıcaklık.genişlik = genişlik + nesne.Genişlik;
sıcaklık.yükseklik = yükseklik + nesne.yükseklik;
dönüş sıcaklığı;
geçersiz çıktı()
cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;
;
int ana()
Square_Box mySquare_Box1(3.0, 5.0, 6.0), mySquare_Box2(2).0, 3.0, 5.0) sonuç;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.çıktı();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.çıktı();
sonuç = mySquare_Box1 + mySquare_Box2;
cout << "Dimensions of resultant square box = " << endl;
sonuç.çıktı();
0 döndür;
Örnek 4: İlişkisel Operatör Aşırı Yüklemesi
Şimdi, ilişkisel operatör aşırı yüklemesinin bir örneğine bakacağız. İlişkisel operatör aşırı yüklemesinin sözdizimi, ikili operatör aşırı yüklemesinin sözdizimi gibidir. Bu örnekte, “<” and “>“Square_Box” nesnelerine uygulanacak ” operatörleri.
#Dahil etmekad alanı std kullanarak;
sınıf Kare_Kutu
özel:
şamandıra uzunluğu;
yüzer genişlik;
yüzer yükseklik;
halka açık:
Kare kutu()
Square_Box(kayan l, kayan w, kayan h)
uzunluk = l;
genişlik = w;
yükseklik = h;
// Operatör Aşırı Yüklemesi - "<" operator
bool operatörü < (const Square_Box& obj)
eğer(uzunluk < obj.length)
true döndür;
Başka
yanlış döndür;
// Operatör Aşırı Yüklemesi - ">" operatörü
bool operatörü > (const Square_Box& nesne)
if(uzunluk > nesne.uzunluk)
true döndür;
Başka
yanlış döndür;
geçersiz çıktı()
cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;
;
int ana()
Square_Box mySquare_Box1(2.0, 3.0, 5.0), mySquare_Box2(4.0, 6.0, 8.0);
bool sonucu;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.çıktı();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.çıktı();
sonuç = mySquare_Box1 < mySquare_Box2;
cout << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
cout < mySquare_Box2 = " << result << endl;
0 döndür;
Sonuç
C++, çeşitli alanlarda yaygın olarak kullanılan genel amaçlı ve esnek bir programlama dilidir. Bu programlama dili hem derleme zamanı hem de çalışma zamanı polimorfizmini destekler. Bu makale, C'de operatör aşırı yüklemesinin nasıl gerçekleştirileceğini gösterdi++. Bu, geliştiricinin operatörü aşırı yükleme için tanımlaması için fazladan çaba ekleyen C++'ın çok kullanışlı bir özelliğidir, ancak kesinlikle sınıfın kullanıcısı için hayatı kolaylaştırır.