Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
4
Cevap
563
Tıklama
0
Öne Çıkarma
Aritmetik İşleçlere Aşırı Yükleme
S
13 yıl
Onbaşı
Konu Sahibi

Merhaba, aşağıdaki kod (5,7) ve (9,3) kordinatlarının x ve y lerini toplayıp yazdırıyor. "testSinif operator+ (testSinif);" satırındaki operator+ tanımı tam anlayamıyorum. türü sınıf_adı :: operator işleç (argüman listesi) argüman listesi tam olarak nedir ? Ora ile beraber "//+ işleci testSinif sınıf için aşırı yükleniyor.." açıklaması altındaki tanımdan da hiçbişey anlamadım. Yardımcı olabilirseniz sevinirim.

 
#include <iostream>
using namespace std;

//Sınıf tanımlanıyor..
class testSinif
{
public:
int x,y;
testSinif () {x=0;y=0;}
testSinif (int,int);
testSinif operator+ (testSinif);
};

testSinif::testSinif (int a,int b)
{
x=a;
y=b;
}

//+ işleci testSinif sınıf için aşırı yükleniyor..
testSinif testSinif::operator+ (testSinif param)
{
testSinif gecici;
gecici.x=x+param.x;
gecici.y=y+param.y;
return(gecici);
}

int main()
{
testSinif a (5,7);
testSinif b (9,3);
testSinif c;
//İki nesne toplanıyor..
//+ işleci operator+ () işlevini çağırır...
c=a+b;
cout<<c.x<<"\n";
cout<<c.y<<"\n";

system("pause");


return 0;

}

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



£
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: SKULLAS

Merhaba, aşağıdaki kod (5,7) ve (9,3) kordinatlarının x ve y lerini toplayıp yazdırıyor. "testSinif operator+ (testSinif);" satırındaki operator+ tanımı tam anlayamıyorum. türü sınıf_adı :: operator işleç (argüman listesi) argüman listesi tam olarak nedir ? Ora ile beraber "//+ işleci testSinif sınıf için aşırı yükleniyor.." açıklaması altındaki tanımdan da hiçbişey anlamadım. Yardımcı olabilirseniz sevinirim.

 
#include <iostream>
using namespace std;

//Sınıf tanımlanıyor..
class testSinif
{
public:
int x,y;
testSinif () {x=0;y=0;}
testSinif (int,int);
testSinif operator+ (testSinif);
};

testSinif::testSinif (int a,int b)
{
x=a;
y=b;
}

//+ işleci testSinif sınıf için aşırı yükleniyor..
testSinif testSinif::operator+ (testSinif param)
{
testSinif gecici;
gecici.x=x+param.x;
gecici.y=y+param.y;
return(gecici);
}

int main()
{
testSinif a (5,7);
testSinif b (9,3);
testSinif c;
//İki nesne toplanıyor..
//+ işleci operator+ () işlevini çağırır...
c=a+b;
cout<<c.x<<"\n";
cout<<c.y<<"\n";

system("pause");


return 0;

}


operator+ demek, + yani toplama operatörüne toplama dışında başka görevler yükleyebiliriz.

sınıf_adı :: operator işleç (argüman listesi) -> Buradaki argüman listesi dediğimiz bildiğimiz argümanlar.
Örneğin void fonk(int a=0, float b=2.5, char ch='e', string d='Deneme'){} Fonk. İçindekiler Argümandır.



testSinif gecici;
gecici.x=x+param.x;
gecici.y=y+param.y;
return(gecici);

Burada ->

testSinif gecici; ile, class'da bir obje tanımlamış oldun.

gecici.x=x+param.x; -> gecici.x 'teki x'imiz X1,Y1'deki X... ,,, param.x'teki X ise X2,Y2 deki X...
yani (5,7) ilk gecici.x 'TEki x 5 sayısı, (9,3) param.x'teki ise 9 sayısına tekabül ediyor.

gecici.y=y+param.y; -> aynı üstteki gibi. Buradada y koordinatları için aynı şey yapılmış.

Böylelikle X1+X2 ve Y1+Y2 'yi toplamamız sağlanacak.

Koaly gelsin.



S
13 yıl
Onbaşı
Konu Sahibi

Tüm sorularıma ilgi gösterip yanıtlıyorsun, yardımcı oluyorsun gerçekten çok teşekkürler. Bi sorum daha olacak 2 kordinat toplamak için gecici.x=x+param.x; kullanıyoruz peki 3 veya daha fazla kordinatımız olsaydı nasıl bir tanım yapacaktık yani x1 + x2 + x3 ... gibi (x1,y1) (x2,y2) (x3,y3) gibi 3 kordinatı topluyor olsaydık ??


Bu mesaja 1 cevap geldi.
£
13 yıl
Yüzbaşı

quote:

Orijinalden alıntı: SKULLAS

Tüm sorularıma ilgi gösterip yanıtlıyorsun, yardımcı oluyorsun gerçekten çok teşekkürler. Bi sorum daha olacak 2 kordinat toplamak için gecici.x=x+param.x; kullanıyoruz peki 3 veya daha fazla kordinatımız olsaydı nasıl bir tanım yapacaktık yani x1 + x2 + x3 ... gibi (x1,y1) (x2,y2) (x3,y3) gibi 3 kordinatı topluyor olsaydık ??


Rica ederim. ne demek.

3. bir X3Y3 olsaydı gene aynı şeiklde z derdin.. altına devam ederdin yada yanına devam ederdin.



B
5 yıl
Yüzbaşı

Edit:....





< Bu mesaj bu kişi tarafından değiştirildi boçi -- 31 Ocak 2021; 18:45:6 >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.