Operator der expliziten Typkonvertierung: ()
C++ lässt die explizite Typkonvertierung mithilfe der Syntax, die der Syntax Funktionsaufruf vergleichbar ist.
simple-type-name ( expression-list )
Hinweise
NAME SIMPLE-TYPEAusdruck, der aus einer Liste in Klammern eingeschlossen ist und erstellt ein Objekt des angegebenen Typs mithilfe der angegebenen Ausdrücke.Im folgenden Beispiel wird eine explizite Typkonvertierung für den int-Typ an:
int i = int( d );
Im folgenden Beispiel wird eine geänderte Version der Point-Klasse, die in Funktionsaufruf-Ergebnissedefiniert ist.
Beispiel
// 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
Obwohl das obige Beispiel die explizite Typkonvertierung mithilfe von Konstanten wird, funktioniert das gleiche Verfahren, um diese Konvertierungen für Objekte ausgeführt wird.Das folgende Codefragment veranschaulicht dies:
int i = 7;
float d;
d = float( i );
Explizite Typkonvertierungen können mithilfe der „Umwandlungs“ Syntax ebenfalls angegeben werden.Das vorhergehende Beispiel neu geschrieben, mithilfe der Syntax Umwandlungs ist:
d = (float)i;
Konvertierungen Format FUNCTION und umgewandelte haben dieselben Ergebnisse beim Konvertieren von Einzelwerten.In der FUNCTION Format Syntax, können Sie mehr als ein Argument für die Konvertierung angeben.Dieser Unterschied ist für benutzerdefinierte Typen wichtig.Betrachten Sie eine Point-Klasse und ihre Konvertierungen:
struct Point
{
Point( short x, short y ) { _x = x; _y = y; }
...
short _x, _y;
};
...
Point pt = Point( 3, 10 );
Im vorhergehenden Beispiel, das FUNCTION Format Konvertierung verwendet, wird gezeigt, wie zwei Werte konvertiert (eine für x und *y)*für einen Pointauf den benutzerdefinierten Typ.
Vorsicht |
---|
Mit der expliziten Typkonvertierungen mit Bedacht, da sie die vom C++-Überprüfung des integrierten Datentyps Compilers überschreiben. |
Die Typumwandlung Schreibweise muss für Konvertierungen zu den Typen verwendet werden, die nicht SIMPLE-TYPE NAME Zeiger oder Verweistypen verfügen (z).Konvertierung in Typen, die mit SIMPLE-TYPE NAME ausgedrückt werden können, kann in jeder Form geschrieben werden.Weitere Informationen finden Sie unter Typspezifizierer Weitere Informationen zur Bedeutung SIMPLE-TYPE NAMEbildet.
Typumwandlungen in der Typdefinition ist ungültig.