인프런 커뮤니티 질문&답변

ch yc님의 프로필 이미지
ch yc

작성한 질문수

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

상속성

선처리 영역의 구분을 어떻게 해야할까요?

작성

·

457

0

선처리 영역의 구분_2.png선처리 영역의 구분_1.pngc++ 초기화 리스트 수업입니다.

사진의 어셈블리 코드를 보시면,

call Inventory::Inventory가 생성자의 몸체부분과 같은 중괄호로 묶여있습니다. 그렇다면 Inventory() 생성자가 선처리 영역이 아닌 몸체 내에서 호출된다고 보는게 맞는걸까요?

 

물론 선생님이 강의시간에 Inventory() 생성자는 선처리 영역에서 기본적으로 한번 호출된다고 하셨기때문에, 만약에 같은 중괄호에 묶여있더라도 저걸 선처리 영역으로 본다면,

그냥 몸체에 있는 첫번째 코드 int a=3;이 실행되기 전까지의 모든 어셈블리 코드는 다 선처리 영역이다! 라고 보는것이 맞을까요?

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

C++에서 선처리기(preprocessor)는 소스코드의 컴파일 전 처리를 담당하는 기능입니다. 그리고 선처리기는 #으로 시작하는 전처리자 지시문(preprocessor directive)을 통해 코드를 처리합니다.

반면에, 생성자(constructor)는 객체가 생성될 때 호출되는 함수로, 실제 실행 코드로 컴파일되어 프로그램이 실행될 때 사용됩니다.

따라서, 선처리 영역과 생성자는 서로 다른 영역입니다. 생성자는 객체가 생성될 때 실행되는 함수이기 때문에, 객체가 생성될 때 호출되며 몸체 내에서 실행됩니다.

선생님이 강의시간에 언급하셨듯이, Inventory() 생성자는 선처리 영역에서 기본적으로 한 번 호출되며, 같은 중괄호에 묶여 있어도 선처리 영역으로 볼 필요가 없습니다.

즉, int a=3; 이 실행되기 전까지의 모든 어셈블리 코드는 다 선처리 영역이 아니며, Inventory() 생성자는 몸체 내에서 실행됩니다.

혹시 더 궁금한 사항이 있으시면 추가적인 문의 부탁드려요. 감사합니다.

ch yc님의 프로필 이미지
ch yc
질문자

강의에서 말하는 선처리 영역과 선처리기는 아예 다른얘기인거로 알고 있습니다. 객체의 선처리 영역은 단순히 함수의 몸체(정의부)보다 먼저 호출되어서 선처리 영역이라는 이름을 붙인거로 알고있습니다. 잘못된 답변을 하신것 같습니다. 사람이 아니고 로봇이신가요?

ch yc님의 프로필 이미지
ch yc

작성한 질문수

질문하기