본문 바로가기

Unreal_Engine

Unreal Engine c++ 6/24 (심심해서 막 필기)

일단 프로그래밍은 항상, 공부를 하기전에 이것을 어따 써먹을지 이유를 알고, 왜 생겼는지 아는지 중요하다

"지금 아래 내용 모르면 게임에서 애니메이션 다루기가 힘들수 있다."

 

 

 

가상 함수 Virtual Function : 

왜 생겼는가?


1. 기본 클래스에 선언된 함수를 파생클래스(자식(상속받은) 클래스)
에서 재정의한 함수
즉, 부모에게 받은 똑같은 이름의 아이템을
자식이 이름이 겹치지 않게 재정의

ex) (FSM 유한상태기계)  같은 경우 부모의 애니메이션 클래스를 받아서

공통적으로 캐릭터가 쓸 애니메이션 데이터를 "분류" 하지만

간혹 애니메이션을 사용해야하는데 이름은 같으면서 

기존에 있는것과 겹치지 않아야 하는 경우가 있다.

이 경우 Override(압도하다,묵살,무시하다)를 붙여주면서 사용하지만

아마도, 자식(파생된) 클래스에서 호출할시 어차피  호출하는 위치가

(파생된) 클래스에서 호출하는것이므로 따로 Override는 안 붙여도 되는걸로알고있지만

 

Child::을 사용해서 정확히 명시해주거나

선언부에서 Override를 사용해서 명확히 구별하는걸로 추정된다.

https://www.devoops.kr/52

https://carfain.tistory.com/entry/%EC%9A%94%EB%A7%88%EC%A0%84-AI-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-1


)

 

요약 : 상위에있는 같은 이름의 함수를 무시하고
하위에 있는 함수만 실행하도록 하는 기법

 

2. 상위 클래스와 멤버 함수의 매개변수는 같아야 한다.
(아마 이름이 같아야한다)
리턴형은 상관없음 (void,int, float,double,char,string)

 

3.

부모만 Virtual을 써도 알아서 자식 클래스에서 재정의됨

 

 

 

 

구조체 연산자를 통해 접근해서 Print() 함수를  호출

이것을 비유하자면 A라는 가문(가장 상위 클래스의 함수 이름이 있어야 하고)

B라는 가문의 후계자(파생 클래스)의 행동은  A라는 부모또는 가문이 정해준 규율과는 이름은 같지만

행동은 다르게 할수 있다.

하나의 종에서 다양한것을 호출할려고 할때

(PolyMorphism 다형성)