Akkor most ez mit is jelent a programozásban? (C++)
// const member function
int get() const {return x;}
// member function returning a const&
const int& get() {return x;}
// const member function returning a const&
const int& get() const {return x;}
------------------------------------------
Azt értem, hogy az elsőnél a const azt jelenti, hogy a függvény nem fog semmilyen értéket módosítani, a másodikat viszont nem értem teljesen...
Akkor most egy konstans értéket ad vissza, ráadásul annak is a memóriacímét, mivel ott van a & operátor.
A harmadik pedig a kettő az egyben.
De akkor most mit is ad vissza a második? Mert sima cout-tal kiíratták a visszaadott értéket, pedig a & alapján egy memóriacímnek kellene lennie.
Vagyis hivatkozok a változóra?
De miért kell rá hívatkozni, amikor így is úgy is az osztály tagváltozójának értékét adja vissza?
Vagy ezt az követeli meg, hogy konstansként deklaráltam a függvényt?
const int get()
Egy másolatot ad vissza.
const int& get()
Magát az eredményt.
Mindkettő lefutot, de akkor most a netes leírások, és az alapján, amit írtál valahogy így kell elképzelnem.
"const int& get()
Magát az eredményt."
De ez csak akkor értelmes kód, ha a visszaadott dolog nem semmisül meg a get lefutása után (magyarul nem függvény lokális a visszaadott cucc).
De ha jól gondolom, akkor ez csak a nagyobb objektumoknál kell mindenképpen referenciával, mert végül is például egy egyszerű számnál nem számottevő az a töredéknyi másolási idő, nem?
Bár lehet az a legjobb megoldás, ha mindet inkább referenciával oldom meg...
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!