[Basic] 생성자 호출 정리

Program Lang./C++ 2017. 4. 26. 13:35

1. 목적

너무 어려운 부분만 파다보면 기본에서 헛갈리기 시작한다. 그런 면에서 "http://soen.kr/" 사이트는 정리가 잘 되어 있어서 도움이 많이 된다. 가장 기본이지만 자주 혼돈스러운 생성자 호출 방법에 대해서 정리한다. SoEn 사이트 내용을 인용 할 수 있다는 점을 원작자에게 알립니다.


2. 소스코드

아래 코드는 default 생성자 및 일반 매개변수를 가지는 생성자를 정적 또는 동적으로 호출하는 여러가지 경우에 대해서 정리하였다.


SoEn 사이트를 보면 암시적인 방법과 명시적인 방법으로 분류되어 있던데, 확실히 알아두면 다른 책을 보기에 편하다.



아래 코드는 생성자 부분에 default 지시어와 explicit 지시어를 추가하였다. 상세한 의미는 생략하고 내가 이해한 바로는 default 지시어는 default 생성자를 컴파일러에게 생성하도록 명명하는 것이고, explicit 지시어는 변환 생성자에 의미가 더 큰 지시어로 컴파일러가 임의적으로 변환을 막기 위해서 사용하는 것으로 SoEn에 잘 정리되어 있다. (변환 생성자부분 참조)



3. 생성자가 아닌 맴버변수 자체 초기화

default 지시어가 설정된 생성자를 통해서 생성된 객체는 맴버변수 초기화가 제대로 되어 있지 않다. 따라서 이를 다른 방법으로 처리할 수 있는데 c++11 이후에 가능한 것으로 안다. 예전에 읽었던 Modern C++에 정리되거나 standard c++ 표준에서 본 것 같은데 어디서 봤는지는 기억이 잘 안다. 하지만 아래와 같은 방법을 통해서 초기화가 가능하다.



: