Jawne typu konwersji operatora:)
Jawna konwersja typu przy użyciu składni podobnej do składnia wywołania funkcji zezwala na C++.
simple-type-name ( expression-list )
Uwagi
A Nazwa typu proste po Lista wyrażeń ujęty w nawiasy konstrukcje obiekt określonego typu przy użyciu określonego wyrażenia.Jawna konwersja typu int wpisać można znaleźć w poniższym przykładzie:
int i = int( d );
W poniższym przykładzie użyto zmodyfikowanej wersji Point klasy zdefiniowane w Wyników wywołania funkcji.
Przykład
// 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();
}
Dane wyjściowe
x = 20, y = 10
x = 0, y = 0
Mimo, że w poprzednim przykładzie zademonstrowano jawna konwersja typu przy użyciu stałych, tej samej techniki działa do przeliczania tych obiektów.Poniższy fragment kodu ilustruje to:
int i = 7;
float d;
d = float( i );
Konwersje jawne typu można również określić, używając składni "cast".Poprzedni przykład, przerobionych, używając składni cast jest:
d = (float)i;
Zarówno Obsada i stylu Funkcja konwersji mają te same wyniki, podczas konwersji z pojedynczymi wartościami.Jednakże w składni funkcji stylu można określić więcej niż jeden argument dla konwersji.Ta różnica jest istotna dla typów zdefiniowanych przez użytkownika.Należy wziąć pod uwagę Point klasy i jej konwersji:
struct Point
{
Point( short x, short y ) { _x = x; _y = y; }
...
short _x, _y;
};
...
Point pt = Point( 3, 10 );
Poprzedniego przykładu, który używa stylu Funkcja konwersji, pokazuje, jak przekonwertować dwóch wartości (jeden dla x i jeden dla y) typ zdefiniowany przez użytkownika Point.
Przestroga |
---|
Użyj Konwersje jawne typu z rozwagą, ponieważ zastępują one kompilator C++ wbudowany typ sprawdzania. |
Oddanych notacji muszą być używane do konwersji do typów, które nie mają Nazwa typu proste (wskaźnik lub odniesienia typów, na przykład).Konwersja na typy, które mogą być wyrażone z Nazwa typu proste mogą być pisane w obu formularzy.Zobacz Specyfikatorze typu uzyskać więcej informacji, co stanowi Nazwa typu proste.
Definicja typu w ramach poświaty jest niedozwolona.