Condividi tramite


Operatore di conversione del tipo esplicita: ()

C++ consente la conversione del tipo esplicita utilizzando una sintassi simile alla sintassi di chiamata di funzione.

simple-type-name ( expression-list )

Note

In semplice-tipo-nome seguito da elenco di espressioni tra parentesi costrutti inclusi un oggetto del tipo specificato utilizzando espressioni specificate.Nell'esempio seguente viene illustrata una conversione esplicita del tipo al tipo int:

int i = int( d );

Nell'esempio viene utilizzata una versione modificata di Point classe definita in Risultati delle chiamate di funzione.

Esempio

// expre_Explicit_Type_Conversion_Operator.cpp
// compile with: /EHsc
#include <iostream>

using namespace std;
class Point
{
public:
    // Define default constructor.
    Point() { _x = _y = 0; }
    // Define another constructor.
    Point( int X, int Y ) { _x = X; _y = Y; }

    // Define "accessor" functions as
    // reference types.
    unsigned& x() { return _x; }
    unsigned& y() { return _y; }
    void Show()   { cout << "x = " << _x << ", "
                         << "y = " << _y << "\n"; }
private:
    unsigned _x;
    unsigned _y;
};

int main()
{
    Point Point1, Point2;

    // Assign Point1 the explicit conversion
    //  of ( 10, 10 ).
    Point1 = Point( 10, 10 );

    // Use x() as an l-value by assigning an explicit
    //  conversion of 20 to type unsigned.
    Point1.x() = unsigned( 20 );
    Point1.Show();

    // Assign Point2 the default Point object.
    Point2 = Point();
    Point2.Show();
}

Output

x = 20, y = 10
x = 0, y = 0

Sebbene l'esempio precedente dimostri la conversione del tipo esplicita utilizzando le costanti, gli stessi tecnica funziona per eseguire queste conversioni negli oggetti.Nel frammento di codice seguente:

int i = 7;
float d;

d = float( i );

Le conversioni esplicite dei tipi possono essere specificato utilizzando la sintassi di “cast„.Nell'esempio precedente, filtro utilizzando la sintassi del cast, è:

d = (float)i;

Sia le conversioni eseguito il cast di tipo funzione hanno gli stessi risultati quando converte da singoli valori.Tuttavia, nella sintassi di tipo funzione, è possibile specificare più argomenti per conversione.Questa differenza è importante per i tipi definiti dall'utente.Si consideri un oggetto Point classe e le conversioni:

struct Point
{
    Point( short x, short y ) { _x = x; _y = y; }
    ...
    short _x, _y;
};
...
Point pt = Point( 3, 10 );

Nell'esempio precedente, che utilizza la conversione di tipo funzione, viene illustrato come convertire due valori (uno per x e uno per y) al tipo definito dall'utente Point.

Nota di avvisoAttenzione

Utilizzare con cautela le conversioni esplicite del tipo, poiché eseguono l'override di controllare il tipo incorporato del compilatore C++.

cast la notazione deve essere utilizzata anche per le conversioni ai tipi che non dispongono di un oggetto semplice-tipo-nome (puntatore o tipi di riferimento, ad esempio.Conversione dei tipi che possono essere espressi con un oggetto semplice-tipo-nome può essere scritta in qualsiasi form.vedere digitare gli identificatori per ulteriori informazioni su cosa costituisce un oggetto semplice-tipo-nome.

La definizione del tipo all'interno dei cast non è consentita.

Vedere anche

Riferimenti

Espressioni di suffisso

Operatori di C++

Precedenza e associatività di operatore