PDA

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...


ceeyt
18/03/2007, 22:47
Fonksiyonun donus turu ifade edilmis.myClass icinde tanimli Node yapisini ifade etmek icin bu yazim kullanilmis.

Revne
19/03/2007, 00:27
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