[C++] C++ 스타일의 초기화 (묵시적 형변환)

int num = 20;
int &ref = num;
위와 같은 방식의 선언 및 초기화는 C++에서
int num(20);
int &ref(num);
과 같은 방식으로 선언 및 초기화가 가능하다.

마찬가지로
AAA class2 = class1;
AAA class2(class1);
도 동일한 의미로 해석이 된다.

이는 사실
AAA class2 = class1;
이 아래와 같이 묵시적으로 변환이 되어서
AAA class2(class1);

객체가 생성되는 것이다.

따라서 복사 생성자에 의해서 초기화가 이루어지며 복사 생성자 앞에 explicit 키워드를 붙이면 묵시적 변환이 일어나지 않아서

AAA class2 = class1; 과 같은 방식으로는 초기화가 안되고

AAA class2(class1); 과 같은 방식으로만 초기화가 가능하다.

그리고 이와 같은 묵시적 변환은 복사 생성자에서만 일어나는게 아니라 전달인자가 하나인 생성자에서도 발생한다.

AAA class1 = 3; 은 AAA class1(3)으로 묵시적 변환이 발생한다.

댓글

이 블로그의 인기 게시물

[NSIS] 32비트와 64비트 모듈 등록하는 법. (regsvr32)

[Visual Studio] Windows 7 에서 Visual Studio 6.0 디버그 시 프로세스 좀비되는 증상 해결 방법