2015-09-19 14 views
18

mi sono imbattuto il seguente pezzo di codice e non riuscivo a capire che cosa significa:tipi primitivi come oggetti in C++

typedef int INT; 
5 .INT::~INT(); 

Nota: C'è uno spazio tra il numerico 5 e decimale.

Domande: 1. Qualcuno potrebbe spiegare che cosa significano esattamente le due righe sopra? 2. Perché non dovrebbe funzionare senza typedef? Qualche ragione dietro? 5 .int::~int() genera errore.

+0

@Hurkyl lavorando bene per me: http://ideone.com/cc8PTn, provate a compilare come cpp –

+1

Strettamente legato: http://stackoverflow.com/a/456339/2352671 – 101010

risposta

15

.INT::~INT() è una chiamata di pseudo distruttore, utile per il codice di codice.

Si noti che non può essere utilizzato senza il tipo typedef.


Standardese:

C++ 03 §5.2.4 “ Pseudo chiamata distruttore ”:
  1. L'uso di una pseudo-distruttore-namedopo un punto . o l'operatore della freccia -> rappresenta il distruttore per il tipo di classe non denominato da nome-tipo. Il risultato deve essere utilizzato solo come operando per l'operatore di chiamata di funzione () e il risultato di tale chiamata è di tipo void. L'unico effetto è la valutazione dell'espressione postfissa prima del punto o della freccia.
+2

Ma è inutile nell'esempio dato, giusto? Puoi elaborare ciò che potrebbe essere probabilmente destinato a qui? – jpo38

+2

È solo un no-op. Non c'è pulizia per un 'int'. –

+0

Probabilmente è anche un comportamento indefinito nell'esempio, dato che '5' è un'espressione costante – Hurkyl

Problemi correlati