반응형
오늘 공부한 내용📓
- C++
개념 공부
다이아몬드 상속
- 하나의 클래스가 두개 이상의 클래스로부터 상속 받는 구조
A
/ \
B C
\ /
D
- 다이아몬드 상속에는 D 클래스에서 A 클래스의 멤버 변수나 멤버 함수에 접근할 때, B나 C 중 어떤 클래스를 기반으로 하는지 모호하다는 문제가 있어 잘 사용하지 않는 상속 방법
- C++ 에는 다이아몬드 문제를 해결하기 위해 가상 상속을 지원함.
- 가상상속은 다이아몬드 상속 구조에서 공통된 기본 클래스를 가상으로 상속하여, 다이아몬드 구조를 일반적인 트리구조로 바꿔주는 기법
- virtual 키워드를 사용하여 공통된 클래스를 가상으로 상속
class A {
// ...
};
class B : virtual public A {
// ...
};
class C : virtual public A {
// ...
};
class D : public B, public C {
// ...
};
- B 와 C에서 A의 멤버변수와 멤버함수를 공유하기 때문에, B > C 순서로 생성자가 호출되며 A의 멤버변수를 초기화할 경우, C의 내용으로 덮어쓰기 됨
제가 공부한 내용을 기록하고 있습니다.
혹시 수정이 필요한 부분이 있다면, 댓글로 지적 부탁드립니다!
선한 관심과 도움 감사드립니다😊
반응형
'TIL::Today I Learn' 카테고리의 다른 글
[TIL] 20230726 (0) | 2023.07.28 |
---|---|
[TIL] 20230723 (0) | 2023.07.28 |
[TIL] 20230720 (0) | 2023.07.28 |
[TIL] 20230719 (0) | 2023.07.28 |
[TIL] 20230718 (0) | 2023.07.28 |