명시적 형식 변환 연산자:)
C + + 함수 호출 구문을 유사한 구문을 사용 하 여 명시적 형식 변환을 허용 합니다.
simple-type-name ( expression-list )
설명
A 단순한 형식 이름 뒤에 식 목록 괄호 구문은 지정 된 식을 사용 하 여 지정 된 형식의 개체를 포함 합니다.다음 예제에서는 int 형식으로 명시적 형식 변환을 보여 줍니다.
int i = int( d );
다음은 수정 된 버전을 사용 하 여 Point 클래스에 정의 된 함수 호출 결과.
예제
// 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
상수를 사용 하 여 명시적 형식 변환을 앞의 예에서 같은 방법을 개체에서 이러한 변환을 수행 하는 작동 합니다.다음 코드 조각은이 보여 줍니다.
int i = 7;
float d;
d = float( i );
명시적 형식 변환은 "캐스팅" 구문을 사용 하 여 지정할 수도 있습니다.캐스트 구문을 사용 하 여 다시 작성 하는 이전 예제가입니다.
d = (float)i;
단일 값에서 변환 캐스팅와 함수 스타일 변환을 동일한 결과가 있습니다.그러나 함수 스타일 구문에서 변환에 대 한 하나 이상의 인수를 지정할 수 있습니다.이 차이점은 사용자 정의 형식에 대 한 중요 한 것입니다.고려는 Point 클래스 및 해당 변환 합니다.
struct Point
{
Point( short x, short y ) { _x = x; _y = y; }
...
short _x, _y;
};
...
Point pt = Point( 3, 10 );
함수 스타일 변환을 사용 하 여, 앞의 예제에서는 두 개의 값을 변환 하는 방법을 보여 줍니다 (용 x 와 y) 사용자 정의 형식에 Point.
주의 |
---|
명시적 형식 변환을 신중 하 게 사용 하는 C++ 컴파일러의 기본 제공 형식 보다 우선 하므로 검사 합니다. |
캐스트 포함 하지 않는 형식으로의 변환에 대 한 표기를 사용 해야 합니다을 단순한 형식 이름 (포인터 또는 참조 형식, 예를 들어).로 표현할 수 있는 형식으로 변환 된 단순한 형식 이름 형식으로 작성할 수 있습니다.참조 하십시오 형식 지정자 무엇을 구성 하는 방법에 대 한 자세한 정보는 단순한 형식 이름.
캐스트 내에서 형식 정의 사용할 수 없습니다.