Casa Finanza personale Programmazione c ++: quando non è una funzione virtuale? - dummies

Programmazione c ++: quando non è una funzione virtuale? - dummies

Video: Programmazione in C++ • I File 2025

Video: Programmazione in C++ • I File 2025
Anonim

In C ++, solo perché si pensa che una particolare chiamata di funzione sia legata in ritardo non significa che lo sia. Se non dichiarato con gli stessi argomenti nelle sottoclassi, le funzioni membro non vengono sovrascritte in modo polimorfico, indipendentemente dal fatto che siano dichiarate virtuali.

Un'eccezione alla regola di dichiarazione identica è che se la funzione membro nella classe base restituisce un puntatore o un riferimento a un oggetto classe base, una funzione membro sottoposto a override in una sottoclasse può restituire un puntatore o un riferimento a un oggetto della sottoclasse. In altre parole, la funzione makeACopy () è polimorfica, anche se il tipo di ritorno delle due funzioni differisce:

class Base {public: // restituisce una copia dell'oggetto corrente Base * makeACopy ();}; class SubClass: public Base {public: // restituisce una copia dell'oggetto attuale SubClass * makeACopy ();}; void fn (Base & bc) {Base * pCopy = bc. fare una copia(); // continua su …}

In pratica, è abbastanza naturale. Una funzione makeACopy () dovrebbe restituire un oggetto di tipo Sottoclassella , anche se potrebbe sovrascrivere BaseClass:: makeACopy () .

Questo business di decidere in silenzio quando una funzione è sovrascritta e quando non è una fonte di errore in C ++; tanto che lo standard 2011 ha introdotto il descrittore override che il programmatore può utilizzare per indicare il suo intento di scavalcare una funzione di classe base.

C ++ genera un errore del compilatore se una funzione è dichiarata sovrascritta, ma, di fatto, non sovrascrive una funzione della classe base per qualche motivo (come un argomento non corrispondente) come nell'esempio seguente: >

classe Student {public: virtual void addCourseGrade (double grade);}; classe GradStudent: public Student {public: virtual void addCourseGrade (float grade) override;};
Questo snippet genera un errore in fase di compilazione poiché il metodo GradStudent:: addCourseGrade (float) è stato dichiarato override, ma in realtà non sovrascrive la funzione della classe base Student:: addCourseGrade (double) perché il tipo di argomento non viene visualizzato t partita.

Il programmatore può anche dichiarare una funzione non sovrascrivibile usando la finale parola chiave, anche se quella funzione stessa sovrascrive alcune funzioni della classe base precedenti, come dimostrato nel seguente > PostDoc class: class GradStudent: public Student {public: virtual void addCourseGrade (double grade) final;}; classe PostDoc: public GradStudent {public: virtual void addCourseGrade (double grade);}; Poiché Studente:: addCourseGrade () è contrassegnato come finale

,

la dichiarazione di PostDoc:: addCourseGrade () genera un errore perché tenta di ignorare il metodo Studente .

Inoltre, è possibile dichiarare un'intera classe

finale:

class GradStudent final: public Student Ciò riguarda più dei semplici metodi virtuali della classe. Una classe

finale

non può essere ereditata affatto.

Programmazione c ++: quando non è una funzione virtuale? - dummies

Scelta dell'editore

Come leggere dal file in PHP per la programmazione HTML5 e CSS3 - manichini

Come leggere dal file in PHP per la programmazione HTML5 e CSS3 - manichini

Se puoi scrivere dati in un file in PHP, sarebbe logico che tu possa leggere da quel file anche per la programmazione HTML5 e CSS3. Il readContact. programma php recupera i dati salvati nel programma precedente e li visualizza sullo schermo. Non è difficile scrivere un programma per leggere ...

Come usare una classe PHP in uno script - dummy

Come usare una classe PHP in uno script - dummy

Il codice classe PHP deve essere inserito lo script che usa la classe. Più comunemente, la classe viene archiviata in un file di inclusione separato ed è inclusa in qualsiasi script che utilizza la classe. Per usare un oggetto, devi prima creare l'oggetto dalla classe. Quindi quell'oggetto può eseguire qualsiasi metodo che ...

Scelta dell'editore

Come usare lo strumento Timbro clone di Photoshop - manichini

Come usare lo strumento Timbro clone di Photoshop - manichini

Puoi usare lo strumento Timbro clone in Photoshop per rimuovere gli angoli e altri difetti copiando una porzione dei pixel circostanti, che dovrebbero avere un colore e una consistenza simili, sopra la parte malata dell'immagine. Per utilizzare lo strumento Timbro clone, attenersi alla seguente procedura: Selezionare lo strumento Timbro clone dallo strumento ...

Come disinstallare e reinstallare Photoshop Lightroom - dummies

Come disinstallare e reinstallare Photoshop Lightroom - dummies

Se si nota un problema con Lightroom la prima volta che si avvia esso, qualcosa potrebbe essere andato storto durante il processo di installazione. Disinstallare e quindi reinstallare potrebbe essere tutto ciò che è necessario per correggere il problema. Il processo è diverso per ogni sistema operativo, quindi ecco i passaggi separati per ciascuno. Su Windows: Chiudi tutto ...

Fotografia For Dummies Cheat Sheet - dummies

Fotografia For Dummies Cheat Sheet - dummies

La fotografia è un hobby divertente e gratificante che può renderti molto popolare tra la gente nelle tue foto - o molto impopolare. Per ottenere il massimo da una fotocamera "inquadra e scatta", digitale o meno, la prima abilità da padroneggiare è bloccare l'attenzione. Puoi perfezionare le tue abilità fotografiche in modo che le tue foto siano ...

Scelta dell'editore

Agire per aumentare le emozioni edificanti - manichini

Agire per aumentare le emozioni edificanti - manichini

Al fine di elevare le tue emozioni, il primo passo è diventare consapevoli di quale emozioni che hai Diventa consapevole di ciò che ti innesca: cosa ti mette in agitazione e ti fa arrabbiare e ciò che ti rende molto eccitato. Un trigger sta guardando alcuni programmi televisivi e consente alle emozioni di questi programmi di permeare ...

Come le aziende ti convincono ad acquistare i loro prodotti - manichini

Come le aziende ti convincono ad acquistare i loro prodotti - manichini

Quasi tutti i media commerciali destinati alle donne ottengono la loro pubblicità entrate dalle industrie del cibo, della bellezza, della dieta e della moda. Solo l'industria della dieta stessa è un'impresa commerciale da 33 miliardi di dollari l'anno. E, naturalmente, queste industrie hanno bisogno di clienti in modo continuativo per continuare a avere successo. È nel loro interesse per ...

Come si forma l'immagine del corpo nella tua gioventù - dummies

Come si forma l'immagine del corpo nella tua gioventù - dummies

In generale, ciò che hai vissuto con la tua famiglia quando stavano crescendo ha avuto un effetto diretto sui pensieri e le sensazioni che hai avuto sul tuo corpo. Ripensa ai tuoi anni più giovani. Quanto attentamente le seguenti affermazioni descrivono la tua famiglia? Nessuno ha esercitato. L'auto è stata utilizzata anche per viaggi brevi. Cibo pesante e da ingrasso ...