Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

create: diamond problem #33

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open

create: diamond problem #33

wants to merge 3 commits into from

Conversation

KoEonYack
Copy link
Member

다중상속에 대한 다이아몬드 문제입니다.

빚진자
Covenant

@KoEonYack KoEonYack requested a review from osj3474 June 20, 2021 11:18
Copy link
Member

@osj3474 osj3474 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

글 잘 읽었습니다. 리뷰를 남깁니다. :)

C++에서는 다중상속을 지원하니, 제목을 수정하였습니다.

자바의 경우, ‘인터페이스는 다중 상속이 가능하다’ 는 말을 추가하면 어떨까요? 인터페이스는 어떻게 가능한거지 생각해보면서 더 확실하게 기억에 남을거 같아요.

저는 개인적으로 ‘C++은 다중상속을 지원한다면, 이 문제가 C++에서는 발생하지 않는건가?’ 하는 의문이 들었습니다.

C++에서는 동일 이름의 멤버가 있는 경우, 어느 클래스의 것인지를 명시하거나 메서드 명을 재정의해서 사용합니다.

좋은 글 감사합니다~!

@KoEonYack
Copy link
Member Author

@osj3474 오 수정 감사합니다

우선은 C++이 아니라 C#이 자바와 동일하게 상속을 통한 다중상속을 막고있고요,.. 제가 오타를 냈네요,, 제목에는 C++ -> C#이 되어야했습니다.

C++에서 virtual Keyword를 사용하지 않고 모호한 다이아몬드 문제가 발생하면 컴파일 에러가 난다고하네요(참고 https://codingcoding.tistory.com/517)

자바에서는 인터페이스를 통한 다중상속을 허용한다로 표현을 정확하게해야겠군요,,

상속받은 메소드가 구현체가 없는 추상 메소드이기 때문이다. 어차피 구현체가 없기 때문에 Child가 상속받은 메소드가 Father로부터 받은건지, Mother로부터 받은건지 알필요가 없다. 어차피 상속받은 객체인 Child에서 구현을 할 것이기 때문이다.

(참고 https://youngjinmo.github.io/2021/03/diamond-problem/)

좋은 표현이라 가져와봤습니다~
수정은 나중에,,, 해야겠어요..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants