명시적 형식 변환 연산자: ()
C++에서는 함수 호출 구문과 유사한 구문을 사용하여 명시적인 형식 변환을 수행할 수 있습니다.
구문
simple-type-name ( expression-list )
설명
simple-type-name 뒤에 괄호로 묶인 expression-list이 지정된 식을 사용하여 지정된 형식의 개체를 생성합니다. 다음 예제에서는 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();
}
출력
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++ 컴파일러의 기본 제공 형식 검사를 재정의하므로 신중하게 사용하십시오.
캐스트 표기법은 simple-type-name 없는 형식으로 변환하는 데 사용해야 합니다(예: 포인터 또는 참조 형식). simple-type-name을 사용하여 표현할 수 있는 형식으로 변환할 수 있습니다.
캐스트 내의 형식 정의는 올바르지 않습니다.
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기