반응형
1. 상속과 형변환
- const_cast<> : 상수형 참조에서 const 제거
- static_cast<> : 컴파일 시 상/하향 형변환
- dynamic_cast<> : 런타임 시 상/하향 형변환
- reinterpret_cast<> : C언어 스타일 강제 형변환
void testFunc(const MyData& rdata)
{
MyData& data = const_cast<MyData&>(rdata);
data.setData(10);
}
int main()
{
MyData data;
data.setData(5);
testFunc(data);
cout << data.getData() << endl;
return 0;
}
자료형 중에서 유도형인 구조체(클래스) 같은 어떤 집합체 형식으로 재정의를 하는데 여기서 형변환이 사용된다.
* 개인적인 생각 : 접근제어지시자나 여러 상속과 관련해서 언어적으로 오류가 생기지 않도록 형변환을 사용하는 것 같다.

2. 다중 상속
<class Picture : public Image, Shape>
- 한 클래스가 두 개 이상의 기본 클래스를 갖는 상속 형식이다.
- 잘못 사용할 경우 코드 복잡성이 높아지고 메서드 호출시 모호성이 발생할 수 있다.
- 인터페이스 상속에서만 활용하는 것을 권장한다.

3. 가상 상속
<class Image : virtual public Object>
- 다중 상속 상황에서 두개 이상의 부모 클래스의 상위 클래스가 같은 경우를 위한 문법이다.
- 중복되는 상위 클래스 인스턴스가 여러번 생성되는 것을 방지한다.
* 개인적인 생각 : 같은 부모를 여러번 상속할 경우에는 가상화를 시켜주면 vtable에서 함수를 가르키는 포인터가 선언될때마다 변경되기 때문에 메모리 사용의 효율적인 측면에서 사용하는것 같다.

반응형
'All Development' 카테고리의 다른 글
| C++) 클래스 템플릿 (0) | 2024.05.03 |
|---|---|
| C++) 순수 가상 클래스 (0) | 2024.04.17 |
| C++) 가상 함수 작동원리 (0) | 2024.04.15 |
| C++) 가상 함수 (0) | 2024.04.03 |
| C++) 상속의 생정자와 소멸자 (3) | 2024.03.29 |