info8995 님의 블로그

28일차(형변환과 순수 가상 함수) 본문

TIL(Today I Learned)/C++

28일차(형변환과 순수 가상 함수)

info8995 2025. 1. 24. 19:59

1. 형변환 (Type Casting)

C++에서 형변환은 데이터 타입을 변환하는 데 사용됩니다. 아래는 C++에서 제공하는 형변환의 종류와 사용법입니다.

1-1. C++ 형변환의 종류

  1. static_cast<>
    • Built-In Type(float, int, double, bool, ....) 간의 형변환 때만 쓰자.
    • 컴파일 타임에 "TypeCheck"라는 걸 한다. TypeCheck란, 형변환 해도되는지 검사하는 과정을 뜻함. Dog 자료형에서 Cup 자료형으로의 형변환은 안됨.
    • 사용 예:

2.dynamic_cast<>

  • 사용자 정의 자료형(Animal, Dog, Cat, ...) 간의 형변환 때만 쓰자.
  • 컴파일 타임에 "TypeCheck"라는 걸 한다. 
  • 사용 예:
     

3.reinterpret_cast<>

  • static_cast<>()는 이진수 패턴을 변경하지만, reinterpret_cast<>()는 이진수 패턴을 변경하지 않고 강제로 자료형을 변경해버린다. 
  • 즉, 데이터는 그대로인데, 다른 타입으로 해석하도록 강요하는 행위입니다.
  • 사용 예:

4.const_cast<>

  • const 속성을 제거.
    (주의: 원래 const로 선언된 데이터는 수정하면 정의되지 않은 동작 발생)

2. 순수 가상 함수와 추상 클래스

  • 순수 가상 함수구현이 없는 함수로, 파생 클래스에서 반드시 재정의해야 합니다.
  • 추상 클래스는 순수 가상 함수가 하나 이상 포함된 클래스입니다.

예:

순수 가상 함수의 장점

  • 다형성을 활용해 유연한 설계 가능.
  • 부모 클래스에서 공통 인터페이스를 정의하여, 자식 클래스에서 특화된 동작을 구현하도록 강제.

오버라이딩은 기존에 정의된 멤버 함수의 동작을 파생 클래스에서 재정의하는 것을 말합니다. 

오버라이딩 관련 글은 https://info8995.tistory.com/15에 작성해났으니 참고부탁드립니다!

 

정리

  • 형변환은 올바른 타입 체크와 효율적인 메모리 관리에 필수적이며, 각각의 변환은 명확한 목적을 가지고 사용해야 함.
  • 순수 가상 함수추상 클래스는 다형성을 극대화하고, 상속 구조에서 인터페이스와 구현을 분리하는 데 사용됨.