2010-10-08 9 views
7

Fondamentalmente, voglio la funzionalità del compilatore C# della sua parola chiave override nel mio codice C++.Esiste un metodo per contrassegnare (in fase di compilazione) metodi "sovrascritti" le cui firme non corrispondono alla firma di base?

Come tutti sappiamo, il codice precedente verrà compilato correttamente, ma produce alcuni strani comportamenti di runtime. Mi piacerebbe che il mio compilatore C++ catturasse la mia scarsa implementazione con qualcosa come la parola chiavedel C#. Ci sono parole chiave come "override" introdotte in C++, o siamo bloccati con #define override virtual per mostrare il nostro intento? (in realtà, non lo faccio - odio usare il preprocessore per "estendere" il linguaggio).

risposta

1

Se non si riesce ad attendere C++ 0x, Visual C++ ha già questa parola chiave override. (Dal 2005 credo). Lì la sintassi è:

virtual int foo(int) override; 

Non sei obbligato a digitare, tuttavia. Ed è un'estensione microsoft non standard.

+0

scuse a Naveen - la vostra è la risposta corretta "futura"; tuttavia, per le mie esigenze attuali (io uso VS2005), funziona !! Ho taggato questa risposta come "risposta" alla mia domanda, ma +1 alla risposta di Naveen – franji1

3

Per quanto ne so, questo non è possibile con lo standard attuale. Puoi farlo nel prossimo C++ 0x. Vedi qui per maggiori dettagli: Explicit virtual function overrides

+0

Ogni volta che scopro qualcosa su C++ 0x, trovo la sintassi più brutta e brutta ... Sicuramente sono solo io, giusto? – dreamlax

+0

+1: vedere il mio commento su "risposta" qeustion – franji1