Vad är skillnaden mellan virtuell funktion och funktionsöverstyrning?
Vad är skillnaden mellan virtuell funktion och funktionsöverstyrning?

Video: Vad är skillnaden mellan virtuell funktion och funktionsöverstyrning?

Video: Vad är skillnaden mellan virtuell funktion och funktionsöverstyrning?
Video: Skillnader mellan gymnasiet och högskolan med William | KTH Student 2024, Maj
Anonim

Virtuella funktioner kan inte vara statisk och inte heller vara en vän fungera av en annan klass. De definieras alltid i basklass och åsidosatt i härledd klass. Det är inte obligatoriskt för härledd klass att åsidosätta (eller omdefiniera virtuell funktion ), i så fall basklassversion av fungera är använd.

Dessutom, vad är skillnaden mellan virtuell funktion och ren virtuell funktion?

Den huvudsakliga skillnad mellan ' virtuell funktion" och "ren virtuell funktion ' är det ' virtuell funktion ' har sin definition i basklassen och även de ärvda härledda klasserna omdefinierar den. De ren virtuell funktion har ingen definition i basklass, och alla ärvda härledda klasser måste omdefiniera den.

Därefter är frågan, vad är funktionsöverstyrning i C++? C++ Funktion Åsidosättande . Om härledd klass definierar samma fungera som definieras i sin basklass kallas den funktionsöverskridande i C++. Det används för att uppnå körtidspolymorfism. Det gör att du kan tillhandahålla specifik implementering av fungera som redan tillhandahålls av sin basklass.

På samma sätt frågar folk varför vi använder virtuella funktioner?

Virtuella funktioner är Begagnade för att stödja "Körtidspolymorfism". När virtuell funktion anropas genom att använda en Base Class Pointer, bestämmer kompilatorn vid Runtime vilken version av fungera d.v.s. Base Class-versionen eller den åsidosatta Derived Class-versionen ska anropas. Detta kallas körtidspolymorfism.

Kan du åsidosätta en icke-virtuell funktion i C++?

I c++, alla klassmedlemmar funktioner är icke - virtuell som standard. De burk bli gjord virtuell genom att använda virtuell nyckelord i fungera signatur. Som nämnts ovan om de fungera av basklass görs virtuell sedan fungera av härledda eller barnklasser fungera med samma namn kan åsidosätta basklassens fungera.

Rekommenderad: