[c++] 데이터 타입 변환
C++에서 데이터 타입을 변환하는 작업은 종종 발생합니다. 변수를 다른 데이터 타입으로 변환해야 하는 경우가 있을 수 있습니다. 다음은 C++에서 데이터 타입을 변환하는 방법에 대한 안내입니다.
명시적 변환 (Explicit Conversion)
1. 정적 캐스트 (Static Cast)
정적 캐스트는 가장 간단한 형태의 타입 변환으로, 기본 데이터 타입 간의 변환이나 상속 관계가 있는 클래스 사이의 포인터/참조 간의 변환이 가능합니다.
int num1 = 10;
double num2 = static_cast<double>(num1);
2. 동적 캐스트 (Dynamic Cast)
동적 캐스트는 상속 관계에 있는 클래스 사이에서의 포인터나 참조를 변환할 때 사용됩니다.
Base* basePtr = new Derived();
Derived* derivedPtr = dynamic_cast<Derived*>(basePtr);
암시적 변환 (Implicit Conversion)
1. 타입 자동 변환
C++에서는 표현 범위가 작은 데이터 타입에서 큰 데이터 타입으로의 자동 변환이 가능합니다. 이를 묵시적 변환 또는 타입 자동 변환이라고 합니다.
int num = 10;
double result = num; // int에서 double로의 자동 변환
2. 변환 생성자 (Conversion Constructor)
클래스에 변환 생성자가 정의되어 있으면 해당 타입으로의 암시적 변환을 수행할 수 있습니다.
class DoubleValue {
public:
DoubleValue(int num) : value(static_cast<double>(num)) {} // 변환 생성자
double getValue() { return value; }
private:
double value;
};
int num = 5;
DoubleValue doubleObj = num; // int에서 DoubleValue로의 변환 생성자 호출
결론
C++에서는 명시적 변환과 암시적 변환을 통해 데이터 타입을 변환할 수 있습니다. 적절한 변환 방식을 선택하여 프로그램에서 안전하고 효율적인 변환을 수행할 수 있습니다.
이상으로 C++ 데이터 타입 변환에 대한 안내를 마치겠습니다.
참고문헌:
- https://en.cppreference.com/w/cpp/language/explicit_cast