Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

c++ da bi acaiplik


tipitip

Öne çıkan mesajlar

operator overloading ile girilen 3 yazıyı karşılaştırmak istiyorum.2 de olabilir.ztn daha 2 liyi yapamadım.şu overloading olayını çok araştırdım ama anlayamıyorum.nasıl bişidir?nasıl yaparım?
class oluşturdum.constructor kullandım.default ve parametreli.ama dielim ki 3 string i de aynı girdim. ve bana dicek ki girilen 3 string de aynıdır.ya da büükten küçüüüee sıralıcak.kuramadım bi türlü :(
Link to comment
Sosyal ağlarda paylaş

operator overloadingden önce isin mantigindan baslayayim.

örnegin iki integer a ve b yi toplamak icin a+b yaptiginda, aslinda a.operator+(b) fonksiyonunu cagirmis olursun.
bu tür operator islemleri, pek dogal olarak her type icin tanimli degildir. int, char vs. icin tanimlidir mesela ama 0 dan yazdigin bir classin operatorlarini kendi kendine yapmasini bekleyemezsin compilerin, bunun icin ek kod yazman gerekir.

simdi string karsilastirmasi yapacaksan neden class olusturdun onu tam olarak anlamadim ben ama : ) yapmaya calistigin seyi tam olarak anlat, ne yapman gerektigini anlatayim, overloading saplantili bir hocaya maruz kaldigim icin iyi biliyorum konuyu : )

yazdigin class nedir bilmiyorum, ama ön bilgi olarak lefthand side ve righthand side muhabbetine cok dikkat etmeni öneririm.
örnegin, bir ComplexNumber class i yazdin, bilirsin complex numberlari hani 2+3i seklinde gösterilenler falan.

ComplexNumber cn;
int num;

cn+num, cn+cn ve num+cn icin farkli fonksiyonlar yazman gerekir.
cünkü cn.operator(num) görüldügü üzere bir ComplexNumber class member function'i, complexnumber döndürüyor, ama int parametre aliyor.
cn.operator(cn) yine CN class member function'i, cn döndürüyor ama complexnumber parametresi aliyor

en önemlisi ise num.operator+(cn)
bu fonksiyonun left hand side'inda bir complexnumber olmadigindan, bunu free function yazmak zorundasin.
Ve operator fonksiyonun islemlerini yapman icin, complexnumber classinin private memberlarina erismen gerekicek, ama free function oldugu icin eristirmeyecek compiler. Bu yüzden, ya bu free function'i class a friend yapicaksin (class'a friend function fonksiyonismi ekleyerek) ya da class a private memberlari döndüren fonksiyon yazacaksin.

Anlatabilmisimdir umarim, biraz daha detayli aciklarsan daha iyi yardimci olabilirim.
Link to comment
Sosyal ağlarda paylaş

  • 10 ay sonra ...
×
×
  • Yeni Oluştur...