-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
documentationImprovements or additions to documentationImprovements or additions to documentation
Description
C의 타입 캐스팅 (묵시적, 암시적 형 변환)
ex)
int i = 3;
double d = 3.5;
i = double(d);데이터의 손실이 일어날 수 있기 때문에 문제가 될 수 있다.
일반적으로 아래의 캐스트방법들은 함수<변환할타입>(변환대상)으로 진행된다.
static_cast
컴파일시에 논리적으로 변경 가능한 경우에 변경을 허용한다.
static_cast<변환할타입>(변환대상)으로 강제 캐스팅이 아닌 캐스트 연산자를 이용하여 캐스팅이 가능하다. 업캐스트, 다운캐스트 다 가능
ex) static_cast(3);
static_cast는 논리상 맞지 않는 변환을 막아주는 역할을 합니다.
문제점 : 상속관계에서의 형변환이 안전하지 못하다. (자식을 부모가 대체가능함)
dynamic_cast
dynamic_cast와 static_cast는 아예 다르다. 런타임 중 안정성 검사를 진행하고 상속관계에서의 업캐스트나 변환을 진행시켜주지만, 다른 데이터형 변환은 허용하지 않는다. 가상함수를 이용하면 다운캐스팅도 진행이 가능하다.
const_cast
어떤 값을 const나 volatile로, 또는 그 반대로 변경하는것이 유일한 목적
const로 선언했지만 값을 바꾸어주는 경우 const_cast를 사용한다.
reinterpret_cast
저수준 프로그래밍에서 위험한 데이터형 변환을 안전하게 진행시키기 위하여 사용한다.
Metadata
Metadata
Assignees
Labels
documentationImprovements or additions to documentationImprovements or additions to documentation