2012-03-19 17 views

risposta

7

La forma

X x = 42; 

richiede che il costruttore sia non-esplicito e che ci sia un costruttore di copia accessibile. L'implementazione è consentita per costruire un temporaneo e copiarlo, ma nessuna implementazione che conosco lo fa.

+0

Verrà bypassato un operatore di assegnazione esplicita? Avrei pensato che avrebbe preso quella strada. Ma il mio cervello è stato certamente un po 'confuso. –

+2

No, non è consentito costruire un temporaneo. Lo stai confondendo con 'X x = X (42)'? – Pubby

+3

@Pubby: Sì, lo è - si chiama _copy initialization_ per un motivo. ; -] Anche se in pratica, sarà sempre eluito. – ildjarn

5

semanticamente le due operazioni sono diverse per la lingua nelle specifiche, ma i risultati effettivi dopo la compilazione sono gli stessi nelle seguenti circostanze:

  1. C'è un unico costruttore di argomento per X che può assumere un integrale -tipo e il tipo di argomento non è un riferimento di valore non const-
  2. C'è un costruttore di argomento singolo per X dove un tipo integrale può essere convertito nel tipo di argomento e dove l'argomento non è ancora un non- riferimento a valori costali
  3. Nel caso di 2 #, il costruttore non è dichiarato come explicit
+4

Questo è un * lungo * frase. – avakar

+0

Haha, vero ... corretto :-) – Jason