인프런 커뮤니티 질문&답변
생성자
작성
·
266
0
지금껏 생성자는 1번 호출이라고 생각했는데
생성자가 여러번 호출 될 수 있나요??
그렇다면 k5 = 1은
k5의 생성자가 2번 호출되어서 k5가 새로운 메모리 주소에 할당이 되는건가요
아니면 새로운 Knight가 타입 변환 생성자로 메모리 공간에 잡히고 k5에 값이 복사가 되는 것인가요...?
퀴즈
객체 지향 프로그래밍(OOP)의 중심적인 요소는 무엇일까요?
함수(Function)
절차(Procedure)
데이터(Data)
객체(Object)
답변 1
2
Rookiss
지식공유자
생성자도 결국 단순 함수에 불과합니다.
함수에서 다른 함수를 호출할 수 있는것처럼
생성자에서 다른 버전의 생성자를 호출할 수 있으니
생성자 = 1번 호출은 아닙니다.
(특히 상속 관계라면 더욱 더)
그리고 [생성자 = 메모리 할당] 또한 아니고
메모리가 이미 할당된 상태에서,
할당된 메모리를 [적당한 값으로 채우는] 함수가 생성자라고 보시는게 맞습니다.
아니면 새로운 Knight가 타입 변환 생성자로 메모리 공간에 잡히고 k5에 값이 복사가 되는 것인가요...?
공간은 스택 영역에 이미 잘 잡혀 있는 상태고요.
여기서 생성자로 인해 데이터가 복사되어 채워지는 것이죠.





그렇다면 Knight k5 시점에서 이미 메모리가 할당이 되고 그다음 생성자 호출이 일어나는거군요!
답변 감사합니당 :)