본문 바로가기
C,C++

[C, C++] type conversion 형 변환

by matters_ 2022. 5. 3.

형 변환

한 자료형에서 다른 자료형으로 값을 변환하는 것

 

 

  • 암시적 형 변환(implict type conversion): 즉 컴파일러가 자동으로 하나의 기본 자료형을 다른 자료형으로 변환한다. 자동 형 변환(automatic type conversion)이라고 불린다.
  • 명시적 형 변환(explict type conversion): 형 변환을 하기 위해 형 변환 연산자(type casting operator)를 사용한다.

의도치 않은 형 변환은 오류를 원인중 하나이기 때문에 되도록 피해야 하고 될 수 있으면 명시적 형변환을 사용해야한다. 

explicit

암시적 타입 변환을 수행하는데 쓰이지 않게 하는 키워드

class A {
public:
	explicit A(int x = 0, bool b = true);
};

 

C-style cast를 지양하고 static_cast를 사용해야하는 이유

C-style cast는 컴파일 시간에 검사되지 않으므로 오용될 수 있다. (const를 제거하는 등)

 

static_cast의 주요 장점은 컴파일 타임에 타입 검사를 제공하여 부주의한 오류를 만들기가 더 어렵다는 것이다. s

int i = 48;
char ch = i; // implicit conversion


int(4-byte)를 char(1-byte)로 변환하면 잠재적으로 안전하지 않으므로 컴파일러는 불평한다. 이 형 변환을 사용자가 인지하고 사용한다는 것을 알리기 위해 다음과 같이 형 변환 연산자를 사용하면 된다.

int i = 48;
char ch = static_cast<char>(i);

 

Reference

https://www.learncpp.com/cpp-tutorial/explicit-type-conversion-casting-and-static-cast/

https://boycoding.tistory.com/177

 

댓글