All Development

C++) 상속과 형변환

Todah 2024. 5. 1. 19:23
반응형

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