[C++] C++ 형 변환

Zoe·2022년 1월 6일
0

C++

목록 보기
1/2
post-thumbnail

C++ 형 변환


✅ C 스타일의 형 변환(캐스팅 연산자)

#include <iostream>
using namespace std;

int main() {
	int num{65};
    	
        cout << num << '\n';
        cout << (char)num << '\n'; //명시적 형 변환
        
        return 0;
        
}
  • (type) : 명시적 형 변환
  • 그만큼 강력해서 변환하지 못하는 대상이 없음
  • 강제적으로 형 변환을 시켜주기 때문에 프로그래머가 형 변환을 실수해도 컴파일러가 이를 잡아내지 못하는 경우가 생김

🚨 C 스타일의 형 변환의 단점

  • C 스타일의 형 변환(컴파일 타입 형 변환)은 눈에 잘 띄지도 않고 찾아내기 어려움
  • 명시적 형 변환을 수행하였기 때문에 암시적인 형변환이 불가능
    ➡️ 암시적인 형 변환이 불가능하다는 것은 컴퓨터가 생각하기에는 문제의 소지가 있다라는 의미
  • C 스타일의 형 변환은 형 변환의 의도를 구별해내는 것이 어려움

🌟 이를 보완한 것이 C++ 형 변환 연산자. C 스타일 형 변환 연산자에 비해 복잡해 보이더라도 C++ 형 변환 사용하기.

✅ C++ 스타일 형 변환

1️⃣ static_cast

  • static_cast<new_type>(expression)
//기본 자료형 간 형 변환
#include<iostream>
using namespace std;
int main(void){
    double d(13.24);
    float f(10.12f);
    
    double tmp_double;
    int tmp_int;
    float tmp_float;
    
    tmp_int = static_cast<int>(d);    //double -> int 로 형변환
    cout << "static_cast<int>(double) : " << tmp_int << endl;
    
    tmp_float = static_cast<float>(d); //double -> float 로 형변환
    cout << "static_cast<float>(double) : " << tmp_float << endl;
    
    tmp_double = static_cast<double>(f); //float -> double 로 형변환
    cout << "static_cast<double>(float) : " << tmp_double << endl;
    
    return 0;
}

2️⃣ dynamic_cast

3️⃣ reinterpret_cast

4️⃣ const_cast

profile
iOS 개발자😺

0개의 댓글