본문 바로가기
::public/C++

C 스타일함수 스타일 변환

by 해맑은욱 2020. 12. 14.
#include <iostream>
 
using std::cout;
using std::endl;
 
class Parent
{
public:
    Parent() {}
    explicit Parent(int i) {}
};
 
 
enum class Type
{
    A, B, C
};
 
 
void constCastFunc(int i)
{
    const int& j = i;
    int& k0 = (int&)j; // const_cast
 
    // C스타일 캐스트보다 의도가 명확하다
    int& k1 = const_cast<int&>(i);
}
 
int main()
{
    // C 스타일 캐스팅
    int num0 = (int)Type::A;
 
    // 함수형 스타일 캐스팅
    int num1 = int(Type::A);
 
 
    // C, 함수형 스타틸 캐스팅은 아래 세 개의 캐스팅을 시행한다
    int i = 10;
    float& f = (float&)i; // reinterpret_cast
 
    const int& j = i;
    int& k = (int&)j; // const_cast
 
    i = (int)Type::A; // static_cast
    // C, 함수형 스타일 캐스트보다는 C++의 cast를 사용하자
 
 
 
    Parent p;
 
    // 아래는 생성자 호출인가 변환인가?, 둘 다 맞음
    p = Parent(10);
    p = (Parent)10;
}
 
cs

'::public > C++' 카테고리의 다른 글

try catch  (0) 2020.12.14
전통적인 예외 처리  (0) 2020.12.14
reinterpreter_cast  (0) 2020.12.11
dynamic_cast  (0) 2020.12.11
const_cast  (0) 2020.12.11