Video: C# Tutorial for Beginners 27 - Delegates in C# 2024
Som en staketsträngare stöder C ++ både tidig och sen bindning. Vilket som helst programmeringsspråk kan stödja antingen tidig eller sen bindning baserat på dess utvecklingss nycklar. Äldre språk som C tenderar att stödja tidig bindning ensam. Nya språk som Java och C # stöder bara sena bindningar.
Du kan bli förvånad över att standardvärdet för C ++ är tidigt bindande. Utmatningen av programmet OverloadOverride som visas på följande sätt:
Vi är i Student:: Beräkning Vi är i Student:: calcTuition Tryck på Enter för att fortsätta …
Anledningen är enkel, om den är lite daterad. Först måste C ++ fungera lika mycket som C som möjligt för att behålla uppåtkompatibilitet med sin föregångare. För det andra lägger polymorfismen en liten del av kostnaderna för varje funktionssamtal både när det gäller datalagring och kod som behövs för att utföra samtalet.
Grundarna till C ++ var oroade över att eventuella extra kostnader skulle användas som en anledning att inte anta C ++ som systemets valfria språk, så de gjorde effektivare tidigt bindande standard.
För att göra en medlemsfunktion polymorf, måste programmeraren flagga funktionen med C ++-sökordet virtuellt, som visas i följande ändring till deklarationen i OverloadOveride < program: klass Student {public: virtual void calcTuition () {cout << "vi är i Student:: calcTuition" << endl;}};
Sökordet
virtuellt som berättar C ++ som calcTuition () är en polymorf funktion. Det vill säga att förklara calcTuition () virtuellt betyder att samtal till det kommer att vara bunden sent om det råder några tvivel om typen av objektets löptid med vilken kallTuition () kallas.
OverloadOveride med calcTuition () deklarerade virtuella genererar följande utdata: Vi är i Student:: beräkning Vi är i GraduateStudent:: calcTuition Press Ange för att fortsätta …
Om du är bekväm med felsökaren som följer med din C ++-miljö, borde du verkligen gå igenom det här exemplet. Det är så coolt att se programmet ett steg i Student:: calcTuition () första gången fn () kallas men till GraduateStudent:: calcTuition () på det andra samtalet. Du kan inte verkligen uppskatta polymorfism tills du har provat det.