• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

다형성과 virtual 키워드

23.07.23 16:15 작성 23.07.23 16:38 수정 조회수 459

0

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

 

답변 2

·

답변을 작성해보세요.

0

열심히하자님의 프로필

열심히하자

2023.07.24

강의듣고 정리한 내용입니다. 맞는진 모르겠지만

  • 생성자는 부모 → 자식 순으로 호출된다.

    • 정확히 말하면, 자식 생성자의 몸체가 실행되기 이전, 즉 자식 생성자의 선처리 영역에서 부모 생성자가 호출되고, 부모 생성자가 끝나면 이어서 자식 생성자가 호출된다.

    • 선처리 영역에 직접, 호출할 부모 생성자를 명시할 수 있다.(인자로 구분)

       

  • 소멸자는 자식 → 부모 순으로 호출된다.

    • 자식 생성자의 몸체가 실행되고 난 후, 즉 자식 생성자의 후처리 영역에서 부모 소멸자가 호출된다.\

 

선처리, 후처리영역은 c++코드상에 명시되어 있다기 보단 강사님이 추가적으로 언급하셨습니다.

0

루키스팬님의 프로필

루키스팬

2023.07.24

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

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

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

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