Kāda ir atšķirība starp virtuālo funkciju un funkciju ignorēšanu?
Kāda ir atšķirība starp virtuālo funkciju un funkciju ignorēšanu?

Video: Kāda ir atšķirība starp virtuālo funkciju un funkciju ignorēšanu?

Video: Kāda ir atšķirība starp virtuālo funkciju un funkciju ignorēšanu?
Video: Koučings kā dzīves stils. Kā tas strādā un ko dod? 2024, Maijs
Anonim

Virtuālās funkcijas nevar būt statisks un arī nevar būt draugs funkciju no citas klases. Tie vienmēr ir definēti bāzes klasē un ignorēts atvasinātajā klasē. Atvasinātai klasei tas nav obligāti ignorēt (vai no jauna definējiet virtuālā funkcija ), tādā gadījumā bāzes klases versija funkciju tiek izmantots.

Turklāt kāda ir atšķirība starp virtuālo funkciju un tīri virtuālo funkciju?

Galvenais atšķirība starp ' virtuālā funkcija” un “tīrā virtuālā funkcija ' vai tas ir ' virtuālā funkcija ' ir sava definīcija iekš bāzes klase un arī mantotās atvasinātās klases to definē no jauna. The tīra virtuāla funkcija nav definīcijas iekš bāzes klase, un visām mantotajām atvasinātajām klasēm tā ir jādefinē no jauna.

Pēc tam rodas jautājums, kas ir funkciju ignorēšana C++? C++ funkciju ignorēšana . Ja atvasinātā klase definē to pašu funkciju kā noteikts tās bāzes klasē, tas ir pazīstams kā funkciju ignorēšana valodā C++. To izmanto, lai sasniegtu izpildlaika polimorfismu. Tas ļauj jums nodrošināt konkrētu ieviešanu funkciju ko jau nodrošina tā bāzes klase.

Tāpat cilvēki jautā, kāpēc mēs izmantojam virtuālās funkcijas?

Virtuālās funkcijas ir lietots atbalstīt "Izpildes laika polimorfismu". Kad virtuālā funkcija tiek izsaukts, izmantojot bāzes klases rādītāju, kompilators izpildlaikā izlemj, kura versija funkciju t.i., ir jāizsauc bāzes klases versija vai ignorētā atvasinātās klases versija. To sauc par izpildes laika polimorfismu.

Vai varat ignorēt nevirtuālu funkciju programmā C++?

Programmā c++ visi klases dalībnieki funkcijas ir nav - virtuāls pēc noklusējuma. Viņi var jātaisa virtuāls izmantojot virtuāls atslēgvārds funkciju parakstu. Kā minēts iepriekš ja uz funkciju tiek izgatavots no bāzes klases virtuāls tad funkciju atvasinātās vai bērnu klases funkciju ar tādu pašu nosaukumu var ignorēt bāzes klasei funkciju.

Ieteicams: