본문 바로가기

C++ Programming/STL

타입 변환을 위한 새로운 연산자

하나의 인자에 대해서 명시적 타입 변환의 의미를 명확히 하기 위해서 다음과 같은 4가지 연산자를 제공한다.

1.static_cast
   - 타입 변환이 정의되어있는 객체에 대해서만 성공한다. (본래 갖추어진 변환법칙이나 정의된 변환연산)

ex) float x;
     cout << static_cast<int> (x); //x는 int로 출력

2.dynamic_cast
   - 다형성을 띄고 있는 타입을 실제 타입으로 변환하는 것을 가능하게 한다. 실행시간에 검사됨
      다형성 값의 타입을 검사하기 위해서 사용할수도 있다. 
ex) class car;
      class carb : public car{
        ...
       };
      class lirb:  public car{
        ...
       };
       void f(Car *cp)
       {
             carb * p = dynamic_cast<carb*> (cp);
             if(p == NULL){
              //p는 carb타입의 객체가 아니다. 
                   ...
              }
        }

3.const_cast
   - 어떤 타입에 상수성을 추가하거나 제거하는데 사용된다. 

4.reinterpret_cast
   - 컴파일러를 구현한 공급업체가 어떻게 구현했느냐에 따라 다르다. 이식성에 좋지 않다.

지금까지 소개된 연산들은 오직 하나의 인자만을 사용할 수 있다는 것을 기억하자

static_cast <Fraction>(15,100) //예기치 않는 동작!!