반응형
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)으로 묵시적 변환이 발생한다.
반응형
'C++ > Study' 카테고리의 다른 글
[C++] 파일 분할 기준 (0) | 2024.12.14 |
---|---|
[C++] 이니셜라이저(Initializer) (0) | 2024.12.14 |
[C++] 복사 생성자가 호출되는 시점 (0) | 2024.12.14 |
[C++] 메모리 공간의 할당과 초기화가 동시에 일어나는 상황 (0) | 2024.12.14 |
[C++] static 멤버변수의 초기화 방법 (0) | 2024.12.14 |