Conversioni

Gli oggetti di un tipo specifico della classe possono essere convertiti in oggetti di un altro tipo.A tale scopo è necessario la costruzione dell'oggetto con tipo di destinazione della classe dal tipo di origine della classe e quella di un risultato all'oggetto di destinazione.Questo processo è detto conversione dal costruttore.Gli oggetti possono essere convertiti da funzioni fornite dall'utente di conversione.

Quando conversioni standard (descritte in conversioni standard) non può convertire completamente da un tipo specificato al tipo di classe, il compilatore può selezionare le conversioni definite dall'utente per il supporto completo del processo.Oltre alle conversioni esplicite del tipo, le conversioni si verificano quando:

  • Un'espressione di inizializzazione non è lo stesso tipo come l'oggetto inizializzato.

  • Il tipo di argomento utilizzato in una chiamata di funzione non corrisponde al tipo di argomento specificato nella dichiarazione di funzione.

  • Il tipo dell'oggetto restituito da una funzione non corrisponde al tipo restituito specificato nella dichiarazione di funzione.

  • Due operandi di espressione devono essere dello stesso tipo.

  • Un'espressione che controlla un'istruzione di selezione o di iterazione richiede un tipo diverso da quello fornito.

Una conversione definita dall'utente si applica solo se non è ambigua, in caso contrario, viene visualizzato un messaggio di errore viene generato.L'ambiguità è controllata dal punto di utilizzo.Pertanto, se le funzionalità che provocano l'ambiguità non vengono utilizzate, la classe può essere definita con le ambiguità potenziali e non generare errori.Anche se vi sono molte situazioni in cui le ambiguità area, queste sono due cause comportare ambiguità:

  • Il tipo di classe è derivato mediante ereditarietà multipla e è poco chiara dalla classe base per selezionare la conversione (vedere ambiguità).

  • Un operatore di conversione esplicita di tipo e un costruttore per la stessa conversione esistenti (vedere funzioni di conversione).

Sia la conversione dal costruttore che la conversione da funzioni di conversione conformi alle regole di controllo di accesso, come descritto in Controllo di accesso al membro.Il controllo di accesso viene testato solo dopo la conversione viene trovata per essere ambigua.

Per ulteriori informazioni, vedere costruttori di conversione.

Vedere anche

Riferimenti

Funzioni membro speciali (C++)