C++/C++ static, reinterpert, dynamic cast

dynamic_cast는 주로 다형성(polymorphism)과 관련이 있다. 이 연산자는 런타임에 안전한 형변환을 수행한다. 즉, 동적으로 객체의 타입을 확인하고, 그 결과에 따라 적절한 형변환을 수행한다. 주로 상속과 가상 함수(Virtual Functions)를 사용하는 클래스 계층 구조에서 사용된다. dynamic_cast의 기본 형태 new_type은 형변환하고자 하는 새로운 타입을 나타내며, expression은 형변환할 값이나 포인터입니다. new_type = dynamic_cast(expression); 예제를 통해 공부하자 현재 자식이 다시 부모로 캐스팅 하려고 한다. 이런 때를 업캐스팅이라고 한다. 업캐스팅을 해주는 것이 dynamic_cast이다. Base 클래스에는 가상 함수인 pr..
reinterpret_cast()는 static_cast()보다 안전성은 조금 떨어지며, C++에서 가장 강력하면서도 위험한 형변환 중 하나이다. C++ 타입 규칙에서 허용하지 않더라도 상황에 따라 캐스팅하는 것이 적합할 때 사용할 수 있다. 예를 들어 서로 관련이 없는 레퍼런스끼리 변환할 수도 있다. 주로 다른 포인터 타입 간의 형변환에 사용됨. reinterpret_cast의 기본 형태 new_type은 형변환하고자 하는 새로운 타입을 나타내며, expression은 형변환할 값이나 포인터. new_type = reinterpret_cast(expression); 포인터 간 형변환 예제를 통해 알아보자 #include int main() { int intValue = 42; // int 포인터를 do..
static_cast는 언어에서 지원하는 명시적 변환을 수행한다. → 작은 데이터 타입에서 큰 데이터 타입으로 바꾸기 예를 들어 다음 코드처럼 정수에 대한 나눗셈이 아닌 부동소수점에 대한 나눗셈으로 처리하도록 int를 double로 변환해야 할 때가 있다. 이때 static_cast()를 사용하면 된다. int i{ 3 }; int j{ 4 }; double result{ static_cast(i) / j }; → 더 큰 데이터 타입에서 더 작은 데이터 타입으로 변환 double pi = 3.141592653589793; int integerPi = static_cast(pi); // 더 큰 double을 더 작은 int로 형 변환 → 기본 데이터 타입 사이의 형 변환 int intValue = 42; ..
재윤
'C++/C++ static, reinterpert, dynamic cast' 카테고리의 글 목록