캐스팅

manmarru·2024년 2월 22일

c++

목록 보기
11/24
  • 타입을 지정하는 명령문
    크게 4가지가 있다.

부모 A를 B와 C가 각각 상속받는 상황을 생각해보자.

class A
{
public:
	void Render() {	cout << "A 맴버함수 작동 "<< endl;}
};

class B : public A
{
public:
	void Render() {	cout << "B 맴버함수 작동" << endl;}
};

class C : public A
{
public:
	void Render() {	cout << "C 맴버함수 작동" << endl;}
};
A* cA = new A;
A* cB = new B;
A* cC = new C;

static casting

  • 컴파일 환경에서 캐스팅을 함.

dynamic casting

  • 런타임 상황에서 캐스팅을 한다.
  • 다운 캐스팅이 목적.
  • RTTI 기술이 사용된다.
  • 논리적(상속관계)이지 않은 캐스팅이면 NULL을 반환한다. 이를 통해 RTTI를 체크할 수 있다.
  • 다운 캐스팅만 가능하다는 안전성이 있지만 static cast가 더 빨라서 다이나믹 캐스팅을 해보고 문제가 없다면 static cast로 바꿔서 쓰자.

const casting

  • const속성을 지운다.
    이럴거면 const 왜 지정함ㅋㅋ라고 생각하면 안되겠지?

reinterpret casing

  • goto문 급의 억지코딩
    그냥 캐스팅한다. 무슨 일이 일어날지 모른다.

0개의 댓글