[완료] C++에서 class 형 변환에 관하여...
글쓴이: bncrux / 작성시간: 수, 2008/04/02 - 4:07오후
안녕하세요.. c++공부하는 왕초보입니다..
다형성에 관해 공부하던 도중에 c++클래스 형 변환 하는 부분이 있던데요...
1. 클래스 형 변환은 어떤 때에 사용하는 건지...(아무것도 몰라 예를 들어 주셨으면 좋겠습니다..)
2. 그리고 클래스 형 변환시,
class A
class B : public A
라고 하였을 때에 B를 A로 변환하기도 하던데 이건 어떤때에 쓰나요...
3. 변환 후에 클래스 형은 A로 바뀌나요...?
두서없는 질문이지만 답변 부탁드립니다..
Forums:
말씀하신대로
말씀하신대로 다형성을 이용하기위해서 형변환을 하는 경우도 있습니다.
예로 드신 클래스 A와 B가 있다면,
B *b = new B;
A *a = b;//여기서 B*에서 A*으로 형변환이 일어납니다.
위처럼 하위클래스에서 상위클래스로의 형변환은 자동으로 일어나며, public 상속 받을 경우 모든 B는 A이므로 합리적입니다.
하지만 상위클래스에서 하위클래스로의 형변환의 경우, 모든 A가 B라고는 할 수 없으므로 따로 캐스팅연산자를 써줘야합니다.
예를 들어
void foo(A *a) {
...
B *b = dynamic_cast<B*>(a);
...
}
이와 같이 쓰게 됩니다. 그런데 dynamic_cast는 이식성이나 성능면에서 문제가 있어서 저기서 넘어온 a가 원래 B*였다는게 확실한 경우는 static_cast를 쓰기도 합니다.
댓글 달기