Mire jó ebben az esetben a const? (C++)
const char& operator[](int i)const{
return pData[i];
}
char& operator[](int i){
return pData[i];
}
Adott ez a két függvény egy String osztályban.
A const nélküli ha jól értem abban tud többet, hogy lehet balérték. Azaz lehetséges vele az, hogy:
String s1 = "Valami";
s1[0] = 'B';
Akkor az s1 "Balami" lesz.
Szóval a const nélküli változatot értem mért kell, de emellé mért kell egy const-os túlterhelés is.
Az milyen helyzetekben segít?
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Az első const azt biztosítja, hogy a visszaadott referencia nem módosítható. A második const biztosítja az osztály belső állapotának megmaradását, azaz a metódus nem módosíthatja a belső adatszerkezetet, illetve ugyanezen okból csak hasonlóan const metódusokat hívhat meg. Mivel az index operator egy belső adattaggal tér vissza, ezért a második const értelmében az első const is szükségessé válik, hogy a visszaadott adattag ne legyen módosítható (ami megszegné a második cosnt szerinti kikötést).
Lényegében azért van szükség mindkettőre, mert a const nélküli változatot nem tudod konstans objektumon meghívni, a const-al ellátott változat esetében meg nem módosíthatod azt.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!