프로그래머/CPP_강의정리

cpp 가상 함수(아직 이해 안 됨)

미역국마싯 2021. 9. 19. 16:28

아직 정확히 이해하지 못했다. 추가 예정

 

바인딩

1. 정적 바인딩 : 컴파일 시점에 결정된다. 

2. 동적 바인딩 : 실행 시점에 결정된다. 면접 단골 질문

일반 함수는 정적 바인딩에 해당하고, 가상 함수는 동적 바인딩에 해당한다.

 

가상 함수

게임 업계에서 중요한 개념이다..!

virtual void VMove() { cout << "VMove" << endl; }

실제 객체가 어떤 타입인지 알고 있어서 가상 함수를 알아서 호출한다..?

이는 가상 함수 테이블(vftable)에 주소를 저장하기 때문이다.

주소를 저장하므로 32bit에서는 4 byte 크기, 64bit에서는 8 byte 크기를 가지고 있다.

각 객체의 생성자가 실행될 때, 자동으로 vftable에 각 객체를 식별하는 정보를 저장한다.

 

순수 가상 함수

구현은 없고 '인터페이스'만 전달하는 용도로 사용하고 싶을 때 사용한다.

virtual void AMove() = 0;

 

이러한 순수 가상 함수가 클래스 내부에 존재하면, 추상 클래스로 간주한다.

추상 클래스는 직접적으로 객체를 만들 수 없다.

 

 

 

출처

https://www.inflearn.com/course/%EC%96%B8%EB%A6%AC%EC%96%BC-3d-mmorpg-1/dashboard

 

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의

시리즈를 원활하게 학습하기 위한 기초적인 C++ 문법들에 대해 학습합니다. 어셈블리 언어부터 시작해서 기본 C++ 문법, STL, C++11까지 핵심적인 내용을 압축해서 다루게 됩니다., - 강의 소개 | 인

www.inflearn.com