본문 바로가기

C++/Study

[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)으로 묵시적 변환이 발생한다.

반응형