8.4 ~ 8.5 가상함수 관련

phoenixKim·2021년 9월 17일
0

fundamental c++

목록 보기
8/14

1. 가상함수를 호출할때는 -> 연산자를 이용한 호출이 아니어도 된다.


: 참조타입으로 받으면 실형식의 함수가 호출됨을 확인할 수 있다.

  • p1이 parent의 함수를 호출하게 되는 이유는 암시적 복사 생성자에 의해
    객체 c의 일부 메모리만 복사된 것이다.

2. 생성자에서의 가상함수 호출을 피하자.


: 부모쪽 생성자에 가상함수를 호출한 내용인데, 부모쪽의 함수가 호출되었다.
이유는 자식 객체 생성시, 부모의 생성자 호출 완료 후에, 가상함수 포인터가
자식의 클래스를 지정하는 순으로 진행 되면서 가상함수 포인터가
파생클래스의 테이블을 가리켜야 하는데, 그 과정이 완료되지 않았기 때문이다.

3. 가상소멸자를 명시적으로 해야하는 이유는

: 파생클래스의 가상함수 포인터가 부모의 소멸자로 들어오면서 부모의 v-table을 가리키야 하는데 이작업은 소멸자 스코프 내부에서 이루어지기 때문에
반드시 소멸자를 명시적으로 해야 합니다.

profile
🔥🔥🔥

0개의 댓글

관련 채용 정보