[C++] 묵시적 복사 생성
두비니
·2019. 12. 5. 04:30
[C++] 묵시적 복사 생성
다음과 같은 코드는 개발자들이 복사생성자가 호출될 것을 충분히 예상할 수 있다.
Person daughter(father); //복사 생성자를 명시적으로 호출하는 사례
그러나 위와 같은 경우를 제외하고 컴파일러가 복사 생성자를 자동으로 호출하는 경우가 있다.
1. 객체로 초기화하여 객체가 생성될 때
Person son = father; //복사 생성자 자동 호출
Person son(father); //자체 복사생성자 호출
다음의 두 코드는 서로 같은 역할을 한다.
하지만 아래의 코드는 다르다는점 명심하도록
Person son;
son = father; //복사 생성자 호출되지 않음
이건 치환문이고, 위에 있는거는 다른거라고 한다....?
2. '값에 의한 호출'로 객체가 전달될 때
void f(Person person){ //매개변수 person이 생성될 때 복사생성자 생성
...
}
Person father(1, "Kitae");
f(father); //값에의한 호출로, father객체 전달
당연히 참조변수가 아니기때문에 복사생성자 사용.
3. 함수가 객체를 리턴할 때
Person g() {
Person mother(2, "Jane");
return mother; //mother의 복사본을 생성하여 복사본 리턴, 사본이 만들어 질 때 복사생성자 호출
}
g();
'Coding_Algorithm > C_C++' 카테고리의 다른 글
[C] pthread_mutex 이해하기 (0) | 2021.05.07 |
---|---|
[C/C++] sprintf, snprintf (0) | 2021.03.04 |
[C언어] C언어로 수박받기 게임을 만들어보았습니다. (1) | 2020.08.17 |
[재귀함수] 재귀함수 구현할 때 염두에 두면 좋은 것들 (0) | 2020.05.02 |
[C++] 명품 C++ 프로그래밍 예제 05-11 분석 (0) | 2019.12.05 |