2018/08/27 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 1 객체 지향 프로그래밍과 클래스
2018/08/27 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 2 접근 한정자
2018/08/27 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 3 생성자와 소멸자
2018/08/29 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 4 복사 생성자와 깊은 복사
2018/08/29 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 5 this 포인터
2018/08/29 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 6 Class 선언과 정의
2018/08/29 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 7 inline 함수
2018/08/31 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 8 Friend function, friend class
2018/08/31 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 9 연산자 오버로딩, chaining
2018/08/31 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 10 클래스의 핵심 상속
C++에서는 두 클래스에게서 상속 받을수가 있다.
참고로 java에서는 안된다(정확히는 일부로 안되도록 한것!)
다중상속은 코드가 모호해지고 어쩌고 저쩌고 죽음의 다이아몬드 어쩌고 해서 지양 하는 편인데 일단 C++에 있으니까
설명을 대충 해보자면..
1. 다중상속
요런것이다.
요렇게 쓴다.
끝
2. 죽음의 다이아몬드 문제
앗..아앗!
이렇게 되면
카메라폰이 만들어질때
메모리에 요런식으로 5개의 객체가 만들어질테고 전자기기에 ON이라는 함수가 있으면 전화기도 상속받아 있을테고 카메라도 있을테고
카메라폰에는 ON 이 2개! ON 을 사용하면 어느 ON의 주인이 누구인지 알길이 없어 족보가 꼬여버린다 (모호해진다)
요런 상황이 죽음의 다이아몬드이고
요런 상황때문에 개발자를 믿지 못하는 java는 아예 못하게막아놓았다
그러나 C++ 은 개발자를 너무 잘 믿기 때문에 다중 상속을 허용해놓았는데
뭐 허용했으니 어쩌겠는가 해결방안도 만들어야지..
3. 가상 상속
이 둘을
요렇게 바꾸면된다 (가상 상속)
문제가 말끔히 해결되었다!
는 아니고 걍 다중상속을 안쓰면 해결된다.
그리고 friend와 같이 거의다 안써도 해결 가능 하다
정 안될때 빼고는 지양하도록 하자
'교육 노트 > C++ 심화강의' 카테고리의 다른 글
[C++ 때려잡기] C++ 심화강의 13 다형성, 다운 캐스팅 업 캐스팅 (6) | 2018.08.31 |
---|---|
[C++ 때려잡기] C++ 심화강의 12 오버라이딩 (overriding) (0) | 2018.08.31 |
[C++ 때려잡기] C++ 심화강의 10 클래스의 핵심 상속 (0) | 2018.08.31 |
[C++ 때려잡기] C++ 심화강의 9 연산자 오버로딩, chaining (0) | 2018.08.31 |
[C++ 때려잡기] C++ 심화강의 8 Friend function, friend class (0) | 2018.08.31 |