작성
·
365
0
14:45 쯤에
(*_target2).에서 _hp를 자동완성시켜주는데
당시 Player.h, Player,cpp 둘 다 해당 타겟인 몬스터 클래스에 대한 정보는 하나도 없는데 어떻게 몬스터 클래스 내부에 _hp가 있는지 알고 자동완성을 시켜주는지요?
이 부분말고도 그런상황이 자주 나오더군요
선생님께서 visual assist를 사용하고있다는건 초반 강의 질문중에 본것같은데 이녀석의 기능인가요?
답변 2
1
VA를 오래 사용하다 보니 어디가 VS 제공이고 어디가 VA 제공인지는 헷갈려서 잘 모르겠네요.
하지만 _hp 부분은 아마도 Visual Studio 자동 완성이 아닐까 싶긴 합니다.
이는 편집기 자체에서 헬퍼처럼 제공하는 기능이라 C++ 문법의 완성도와는 무관합니다.
그 외 헤더파일에 대한 내용은 잘 이해하셨습니다.
0
이 강의를 통해 전방선언을 언제 써야하는지 뿐만 아니라
헤더파일에 들어가야하는 내용, cpp파일에 들어가야하는 내용이 어느정도인지 얼추 감이 오네요!
cpp파일에는 실제 구현이 들어가야하고
헤더파일에는 구현에 필요한 기본적인 정보가 들어가야하는데
헤더파일에서 기본적인 정보제공 뿐만 아니라 구현까지 하기위해서는 추가적인 정보가 필요하게 되겠죠.
그렇게 되면 더 많은 include ""가 필요해지고 서로 파일들 간의 의존관계가 높아지게 될꺼구요.
그렇게 되면 파일 하나만 건들게 되더라도 프로젝트 전체를 모두 재 빌드 해야하는 상황이 생겨나서 커다란 프로젝트의 경우에는 수정할때마다 어마어마한 빌드시간이 필요로 하게 되겠죠!
결국 이걸 방지하기위해 전방선언을 하는거군요.
아 추가로 앞에 IsDead부분을 헤더파일에 구현하시면서 인라인 이라고 하셔서 찾아봤는데 함수 자체가 스택을 세팅하고 call하고 다시 스택을 정리하는 작업을 해야하다보니 그냥 코드를 실행하는것보다 느리다는걸 알게 됐습니다.
여기서 인라인 함수를 사용하면 가능하다면 컴파일러에서 그대로 코드를 복붙 하듯이 함수를 실행하는걸 아닌 그대로 명령어를 실행하게해줘서 스택을 세팅하는 등 느린행동을 하지 않게 해주는녀석이군요
다만 코드의 길이 자체가 길어져서 exe파일의 크기가 커질 순 있지만 속도에서 이득이 있을 수 있으니 의존관계가 없는 너무 길지 않지만 자주 실행되는 함수의 경우에는 헤더파일에 작성해주는게 좋겠군요.