Mi a különbség a felülírás és az elfedés között?
Y osztály {
void x()const ; };
X osztály: public Y {
void x()const ; }
//Ez így felülírás?
Y osztály {
void x() ; };
X osztály: public Y {
void x()const ; }
//Ez így pedig elfedés?
Y osztály {
void x() ; };
X osztály: public Y {
void x() ; }
//Ez is felülírás?
A const kulcsszó ugyanúgy a szignatúra része, mint a név és a paraméterek típusa, így akár paraméterrel is írhatjuk a példát:
class Y
{
virtual void f();
virtual void g();
};
class X: public Y
{
virtual void f();
virtual void g(int);
};
Ekkor f felül van írva X-ben, aminek csak akkor van jelentése, ha virtuális a függvény. Minden egyéb esetben lényegtelen, hogy ugyanaz-e a szignatúra vagy sem.
g viszont el van fedve, aminek már lehet jelentősége: X egy objektumán g-t nem tudjuk meghívni paraméter nélkül.
Kösz adtam zöld kezet de ezt a mondatot nem értem:
"Ekkor f felül van írva X-ben, aminek csak akkor van jelentése, ha virtuális a függvény. Minden egyéb esetben lényegtelen, hogy ugyanaz-e a szignatúra vagy sem."
A virtuális függvények még csak most jönnek a könyvben.
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!