Video: Population Genetics: When Darwin Met Mendel - Crash Course Biology #18 2025
Som et gjerdsstav, støtter C ++ både tidlig og sen binding. Ethvert gitt programmeringsspråk kan støtte enten tidlig eller sen binding basert på lurene til utviklerne. Eldre språk som C pleier å støtte tidlig binding alene. Nylige språk som Java og C # støtter bare sen binding.
Du kan bli overrasket over at standard for C ++ er tidlig bindende. Utgangen av OverloadOverride -programmet slik det vises, er som følger:
Vi er i Student:: Beregning Vi er i Student:: Beregning Trykk Enter for å fortsette …
Årsaken er enkel, dersom det er litt datert. For det første må C ++ handle så mye som C som mulig for å beholde oppoverforenlighet med forgjengeren. For det andre legger polymorfisme en liten mengde overhead til hver funksjonssamtale både når det gjelder datalagring og kode som trengs for å utføre samtalen.
Grunnleggerne til C ++ var opptatt av at ytterligere overhead ville bli brukt som en grunn til ikke å vedta C ++ som systemets valgfrihet, slik at de gjorde det mer effektive, tidlig bindende standard.
For å gjøre en medlemsfunksjon polymorf, må programmøren flagge funksjonen med C ++-søkeordet virtuelt, som vist i følgende endring i erklæringen i OverloadOveride < program: klassen Student {public: virtual void calcTuition () {cout << "vi er i Student:: calcTuition" << endl;}};
Nøkkelordet
virtuelt som forteller C ++ at calcTuition () er en polymorf funksjon. Det vil si å forklare calcTuition () virtuelle betyr at samtaler til det vil bli bundet sent hvis det er tvil om typen kjøretid for objektet som kalles kallelse () kalles.
OverloadOveride med calcTuition () deklarert virtuelt genererer følgende utgang: Vi er i Student:: calcTuition Vi er i GraduateStudent:: calcTuition Press Skriv inn for å fortsette …
Hvis du er komfortabel med debuggeren som følger med C ++-miljøet, burde du virkelig gå gjennom dette eksemplet. Det er så kult å se programmet enkeltsteg i Student:: calcTuition () første gang fn () kalles men inn i GraduateStudent:: calcTuition () på den andre samtale. Du kan ikke virkelig sette pris på polymorfisme før du har prøvd det.
