개발/C++

[C++] 생성자에 return이 없는 이유?

hojak99 2016. 11. 16. 04:52

친구와 정적 생성, 동적 생성에 대해서 이야기 하다가 생성자로 이야기가 넘어갔다.


생성자에는 명시적으로 return을 사용할 수가 없는데 그 이유가 무엇인지에 대해서 이야기를 나누었다. 




동적으로 객체를 생성하면 초기화가 완료된 후 객체의 포인터가 리턴되기 때문에 참조변수가 된다. 즉, 명시적인 return을 사용하지 못하는 것이다. 포인터를 리턴하기 위해서. 그렇기 때문에 나는 생성자에는 반환값이 없다라기 보다는 묵시적인 반환값 때문에 명시적인 반환을 하지 못한다고 본다.


이것을 확인할 수 있는 방법이 typeid 를 사용하는 것이다.


[그림 1: 반환 값 알아내기]



출력 결과는 보시다 시피 class A * 이다. 포인터를 반환한다는 소리이다.




이 글을 쓰다보니 또 궁금증이 발생했다. new 를 빼면? 어짜피 [그림 1]에서의 출력 결과와 같을 것이다. [그림 2]를 확인해보자.



[그림 2: 뭐지?]



새로운 출력 결과가 생겼다. 뭐지? 나도 모르겠다. 역시 C++은 재미있다. 너무 즐겁다. 난 이런게 좋다.





하여튼, [그림 2]의 출력 결과는 다음 포스팅에서 이야기 해보도록 하겠다. 나도 알아보아야 하니까.

생성자에 return이 없는 이유는 묵시적으로 포인터를 반환하기 때문이다. ㅇㅇㅇㅇㅇ

반응형