작성
·
457
0
c++ 초기화 리스트 수업입니다.
사진의 어셈블리 코드를 보시면,
call Inventory::Inventory가 생성자의 몸체부분과 같은 중괄호로 묶여있습니다. 그렇다면 Inventory() 생성자가 선처리 영역이 아닌 몸체 내에서 호출된다고 보는게 맞는걸까요?
물론 선생님이 강의시간에 Inventory() 생성자는 선처리 영역에서 기본적으로 한번 호출된다고 하셨기때문에, 만약에 같은 중괄호에 묶여있더라도 저걸 선처리 영역으로 본다면,
그냥 몸체에 있는 첫번째 코드 int a=3;이 실행되기 전까지의 모든 어셈블리 코드는 다 선처리 영역이다! 라고 보는것이 맞을까요?
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
C++에서 선처리기(preprocessor)는 소스코드의 컴파일 전 처리를 담당하는 기능입니다. 그리고 선처리기는 #으로 시작하는 전처리자 지시문(preprocessor directive)을 통해 코드를 처리합니다.
반면에, 생성자(constructor)는 객체가 생성될 때 호출되는 함수로, 실제 실행 코드로 컴파일되어 프로그램이 실행될 때 사용됩니다.
따라서, 선처리 영역과 생성자는 서로 다른 영역입니다. 생성자는 객체가 생성될 때 실행되는 함수이기 때문에, 객체가 생성될 때 호출되며 몸체 내에서 실행됩니다.
선생님이 강의시간에 언급하셨듯이, Inventory() 생성자는 선처리 영역에서 기본적으로 한 번 호출되며, 같은 중괄호에 묶여 있어도 선처리 영역으로 볼 필요가 없습니다.
즉, int a=3; 이 실행되기 전까지의 모든 어셈블리 코드는 다 선처리 영역이 아니며, Inventory() 생성자는 몸체 내에서 실행됩니다.
혹시 더 궁금한 사항이 있으시면 추가적인 문의 부탁드려요. 감사합니다.
강의에서 말하는 선처리 영역과 선처리기는 아예 다른얘기인거로 알고 있습니다. 객체의 선처리 영역은 단순히 함수의 몸체(정의부)보다 먼저 호출되어서 선처리 영역이라는 이름을 붙인거로 알고있습니다. 잘못된 답변을 하신것 같습니다. 사람이 아니고 로봇이신가요?