Tam Sürümünü Görmek İçin : siniflarda fonksiyon yazarken c++
Flagrant
18/03/2007, 22:33
merhaba,
Classimizin adi myClass olsun, mesela bir tane Play (member)fonksiyonu yazarken
void myClass:: Play()
{
...
}
seklinde yaziliyordu ama soyle bir ifade godrum bu nedir acaba(linklist icin bir Node structim var)
myClass:: Node* myClass:: Clone()
{
...
}
benim alisagedigim class.cpp yazimindan farkli olarak member functionun basina fazladan --myClass::-- eklenmis. Bu nedendir? Atsak neden sorun verir?
tesekkurler simdiden...
Fonksiyonun donus turu ifade edilmis.myClass icinde tanimli Node yapisini ifade etmek icin bu yazim kullanilmis.
class MyClass
{
...........
public:
struct Node{
....
};
......
};
seklindeki bir class icin eger bir tane Node turunden bir degisken tanımlayacaksan...
MyClass::Node node;
seklinde ifade edilir..
Kolay Gelsin
Flagrant
19/03/2007, 00:32
cevaplar icin tesekkurler peki;
const myClass& myClass:: operator=(const myClass& set)
{
}
seklinde operator tanimlarken neden direk
myClass:: operator=(const myClass&set) demiyoruz?
acehreli
19/03/2007, 07:19
Oncelikle, :: islecinden sonra bosluk birakmamani onerebilir miyim... Yanlis olup olmadigini bile bilmiyorum ama kimse orada bosluk birakmaz.
Soruna gelince, hani islevler (fonksiyon) soyle tanimlanirlar ya:
DonusTuru IslevinAdi(ParametreListesi)
{
/* ... */
};
Iste senin yazdigin operator= islecinin tanimina bakinca sunlari anliyoruz:
DonusTuru -> const myClass&
IslevinAdi -> myClass::operator=
ParametreListesi -> const myClass& set
Yanlis olan ikinci tanimina bakalim:
DonusTuru -> ? (verilmemis!)
IslevinAdi -> myClass::operator=
ParametreListesi -> const myClass& set
C++'ta donus turlerinin belirtilmeleri gerekli oldugu icin ikinci yazdigin dogru olmaz.
Ali
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.