C++/Study
[C++] C++ 스타일의 초기화 (묵시적 형변환)
MoongStory
2024. 12. 14. 23:33
반응형
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)으로 묵시적 변환이 발생한다.
반응형