C++‘da bazı operatöleri ezerek, istediğimiz amaca hizmet etmesini sağlayabiliriz. Örnek vermemiz gerekirse; a+b işleminde “+” işaretini “-“ yapmasını söyleyebiliriz. Böylece programda her hangi bir yerde toplama yapılması gerekirse, program otomatik olarak çıkarma işlemi gerçekleştirecektir. Aşağıda +, – , ++, — operatörlerini değiştirdik. Yeni bir görev eklemek yerine varolan görevlerini biz yazdık. Kodu incelediğinizde anlayacaksınızdır.
#include “stdafx.h” //VisualStudio için gerekli
#include //cout ve cin için gerekli
#include //getch() fonksiyonu için gerekli
using namespace std;
class aYukle
{
private:
int x,y,z;
public:
aYukle() //Öncellikle bir sorun çıkmaması için ilk değerleri atıyoruz.
{
x=0;
y=0;
z=0;
}
aYukle (int a,int b,int c) //İşlemlerde kullanacağımız ilk nesnenin verilerini tutucaz.
{
x=a;
y=b;
z=c;
}
void GetObje(int &a,int &b,int &c)
{
//Burada gelen adreslere direk değerleri yazdırıyoruz.
a=x;
b=y;
c=z;
}
aYukle operator + (aYukle gelenObje); //Ezeceğimiz + işaretinin prototipini belirliyoruz.
aYukle operator – (aYukle gelenObje);
aYukle operator ++ ();
aYukle operator –();
};
aYukle aYukle::operator +(aYukle gelenObje)
{
aYukle tut; // Tut diye bir nesne yaratıp, x,y,z değerlerine atanmasını sağlıyoruz.
tut.x=x+gelenObje.x;
tut.y=y+gelenObje.y;
tut.z=z+gelenObje.z;
return tut;
}
aYukle aYukle::operator -(aYukle gelenObje)
{
aYukle tut;
tut.x=x-gelenObje.x;
tut.y=y-gelenObje.y;
tut.z=z-gelenObje.z;
return tut;
}
aYukle aYukle::operator ++()
{
x++;
y++;
z++;
return *this;
}
aYukle aYukle::operator –()
{
x–;
y–;
z–;
return *this;
}
int _tmain(int argc, _TCHAR* argv[])
{
int al1,al2,al3;
aYukle o1(5,6,7),o2(1,2,3),o3; //Nesnelerimizi yaratıyoruz. Önce o1 nesnesi oluşturulur. Ardından o2 nesnesi x y z de değerlerini korur.
o3=o2+o1;
o3.GetObje (al1,al2,al3); //x y z private alanda olduğu için fonksiyonumuz aracılığı ile alıyoruz.
cout << “x: ” << al1 << ” y: ” << al2 << ” z: ” << al3 << “n”;
o3=o1-o2;
o3.GetObje (al1,al2,al3);
cout << “x: ” << al1 << ” y: ” << al2 << ” z: ” << al3 <<“n”;
++o2;
o2.GetObje (al1,al2,al3);
cout << “x: ” << al1 << ” y: ” << al2 << ” z: ” << al3 <<“n”;
–o1;
o1.GetObje (al1,al2,al3);
cout << “x: ” << al1 << ” y: ” << al2 << ” z: ” << al3 <<“n”;
getch();
return 0;
}
/*
25.05.2010
Kaynak:ilhanbahar.Com
*/
Yorumlar
bukadar basit değil işte kolay olsaydı şimdiye kadar neleri yapılırdı
Zor diye vazgeçmemek lazım 🙂
teşekkürler kod için öncelikle …Anlamadıgım şey şu mesela küçüktür operatörünü (<)
aşırı yüklerken oluşturdugumuz class'ın içinde fonksiyonu int olarak tanımlıyoruz neden böle yapılıyor neden degişkenlik gösteriyor bunu açıklayabilirmisiniz?
Değişken tipi sizin değişkenlerinize göre değişir. Her hangi başka bir tipte olabilir.
Bilgiler için teşekkür ettim,
#include “stdafx.h” //VisualStudio için gerekli
#include //cout ve cin için gerekli
#include //getch() fonksiyonu için gerekli
Burada hata olmuş. Sanırım kodu, yazı editörünün html kısmına yazdığınız için sorun çıkartmış.
Evet Cem, oralarda editör hatası oluşmuş, yanlış hatırlamıyorsam bir giriş için iostream olması gerekiyordu. Getch için ise Google’a bakmak lazım 🙂
Getch için de yazılıyor.