inflearn logo
강의

Course

Instructor

[MMORPG Game Development with C++ and Unreal Series] Part 1: Introduction to C++ Programming

Polymorphism #2

다형성과 virtual 키워드

634

작성자 없음

0 asked

0

수업 너무 잘 듣고 있습니다. 3가지 질문을 하고 싶습니다.

다형성 수업을 듣기 전, 자바를 통해서만 객체 지향 공부를 했었기 때문에 상속 클래스가 부모 클래스의 함수를 재정의 하면 다형성으로 인해 자식 클래스의 멤버 함수가 실행 되는줄 알고 있었으나,

c++ 에서는 다형성을 위해 virtual 함수로 만들어줘야 한다는 것을 알게 되었습니다.

Q1. 다형성을 위해 기본 클래스를 상속받은 자식 클래스들이 각자 마다 다른 함수를 실행하길 원할때마다

virtual 키워드를 기본 클래스에서 모든 멤버 함수마다 달아주는 것이 일반적인가요?

클래스 설계하실때 상속받을 클래스가 있어서 기본 클래스에 거의 모든 함수가 virtual을 달고 있는 것인지 궁금합니다.

 

Q2. 상속성에서 생성자 / 소멸자 실행 순서를 말씀해주셨는데,

부모 클래스 생성자() -> 자식 클래스 생성자()

-> 자식 클래스 소멸자() -> 부모 클래스 소멸자()

생성자의 호출 순서는 어떤 순서인지 궁금합니다.

  1. 자식 클래스 생성자가 호출 되기전 , 선처리로 컴파일러가 부모 클래스 생성자를 먼저 호출한다. (자식 클래스 생성자가 나중에 호출된다.) 호출 순서 또한 부모 -> 자식

  2. 자식 클래스 생성자가 내부에서 부모 클래스 생성자를 먼저 호출한다. (자식 클래스가 생성자가 먼저 호출된다,) 호출 순서는 반대 자식 -> 부모

Q3. 접근 지정자 private : 을 통한 멤버 함수들은 상속을 못 받는 것이 맞는 것으로 보이는데

다형성을 위해 재정의 할 함수들은 기본 클래스에서 모두 public : 선언을 해줘야 하는 것이 맞습니까? virtual 키워드가 달리는 함수들의 접근 지정자가 public : 이어야 하는것인지 궁금합니다.

 

c++

Answer 1

0

chldpfflxm4218

Q1 음 바인딩개념 오버라이딩 개념 가상함수개념을 이해를 못하신 것 같네요

Q2 이건 직접 코드를 쳐보고 출력해보면 금방 알 수 있어요

Q3이건 말을 잘 이해를 못했네요

답변이없길래 적어봄 ㅇㅅㅇ

 

소스코드와 관련하여 질문드립니다

0

66

1

map 컨테이너의 emplace 함수에 대해

0

109

2

시작이 안되네요...!

0

95

2

EAX 명령어 실행 시 RAX의 상위 32비트가 초기화 되는 이유

0

125

1

리틀 엔디안 장점 질문합니다.

0

130

1

메모리 창에 주소를 넣었는데 영어 꺠짐

0

124

1

타입변환#2 build시 knight 인접 stack이 침범당했다는 error가 발생합니다.

0

94

2

map #1 8분 58초 맵은 레드블랙트리로 이루어진 것 같습니다.

1

138

2

hello world 부터 오류 ㅠㅜ

0

186

1

지역변수가 스택? 레지스터

0

127

2

마지막 문제 질문드립니다.

0

162

2

메모리창이 비활성화됩니다.

0

98

1

이중포인터 강좌 부분 질문있습니다.

0

145

1

2를 더하는 이유

0

132

1

메모리 주소 창 엔디안 질문 드립니다. 인프런 봇 답변도 괜찮습니다

1

109

1

해당 코드는 왜 오류가 날까요?

0

154

1

마지막 문제 질문 있습니다.

0

116

1

강의 마지막부분에 질문이 있습니다.

0

190

2

Field초기화

0

140

1

virtual과 override 차이

0

314

2

3:30 참조자 리턴

0

166

1

map 찾기

0

157

1

프로그램 질문드려요

0

258

1

캐스팅 질문

0

136

1