Video: C++ Tutorial 19 : C++ Regular Expressions 2024
Als een hek straddler ondersteunt C ++ zowel vroege als late binding. Elke gegeven programmeertaal kan vroege of late binding ondersteunen op basis van de grillen van de ontwikkelaars. Oudere talen zoals C hebben de neiging om vroege binding alleen te ondersteunen. Recente talen zoals Java en C # ondersteunen alleen late binding.
Het zal u misschien verbazen dat de standaardwaarde voor C ++ vroege binding is. De uitvoer van het OverloadOverride -programma ziet eruit als volgt:
We zijn in Student:: calcTuition We're in Student:: calcTuition Druk op Enter om verder te gaan …
De reden is simpel, als een beetje verouderd. Ten eerste moet C ++ standaard zo veel als C mogelijk werken om opwaartse compatibiliteit met zijn voorganger te behouden. Ten tweede voegt polymorfisme een kleine hoeveelheid overhead toe aan elke functieaanroep, zowel in termen van gegevensopslag als code die nodig is om de oproep uit te voeren.
De oprichters van C ++ waren bezorgd dat extra overhead zou worden gebruikt als een reden om C ++ niet te gebruiken als de taal van het systeem van keuze, dus maakten ze de efficiëntere vroege binding van de standaard.
Om een lidfunctie polymorfisch te maken, moet het programmeerapparaat de functie markeren met het C ++ sleutelwoord virtueel, zoals getoond in de volgende wijziging van de verklaring in de OverloadOveride < programma: class Student {public: virtual holt calcTuition () {cout << "we're in Student:: calcTuition" << endl;}};
Het sleutelwoord
virtueel dat C ++ vertelt dat calcTuition () een polymorfe staaffunctie is. Dat wil zeggen, het verklaren van calcTuition () virtueel betekent dat aanroepen ervan te laat zullen zijn als er enige twijfel bestaat over het run-time type van het object waarmee calcTuition () wordt aangeroepen.
Het uitvoeren van het programma OverloadOveride met calcTuition () gedeclareerde virtuele genereert de volgende uitvoer: We zijn in Student:: calcTuition We zijn in GraduateStudent:: calcTuition Press Enter om door te gaan …
Als u tevreden bent met de foutopsporing die wordt meegeleverd met uw C ++ -omgeving, zou u dit voorbeeld eenmalig moeten doorlopen. Het is zo cool om het programma eenmalig te zien in Student:: calcTuition () de eerste keer dat fn () wordt aangeroepen, maar in GraduateStudent:: calcTuition () bij de tweede oproep. Je kunt polymorfisme pas echt waarderen als je het hebt geprobeerd.