C++

C++ Operatör Aşırı Yüklemesi

C++ Operatör Aşırı Yüklemesi
Bu makale, C'de operatör aşırı yüklemesi için bir kılavuz sağlar++. Operatör aşırı yüklemesi, C++ programlama dilinin kullanışlı ve güçlü bir özelliğidir. C++, çoğu yerleşik operatörün aşırı yüklenmesine izin verir. Bu eğitimde, operatör aşırı yükleme mekanizmasını göstermek için birkaç örnek kullanacağız.

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:

  1. Örnek 1: Tekli Operatör Aşırı Yüklemesi (1)
  2. Örnek 2: Tekli Operatör Aşırı Yüklemesi (2)
  3. Örnek 3: İkili Operatör Aşırı Yüklemesi
  4. Ö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 etmek
ad 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 etmek
ad 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 etmek
ad 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 etmek
ad 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.

Microsoft Sculpt Touch Wireless Mouse Review
I recently read about the Microsoft Sculpt Touch wireless mouse and decided to buy it. After using it for a while, I decided to share my experience wi...
AppyMouse On-screen Trackpad and Mouse Pointer for Windows Tablets
Tablet users often miss the mouse pointer, especially when they are habitual to using the laptops. The touchscreen Smartphones and tablets come with m...
Middle mouse button not working in Windows 10
The middle mouse button helps you scroll through long webpages and screens with a lot of data. If that stops, well you will end up using the keyboard ...