[C++] 복사 생성자의 호출시점

dd_ddong·2022년 7월 18일
0

c++

목록 보기
21/38

3가지 호출시점

1. 생성과 동시에 초기화

SimpleClass obj2 = obj1;

2. 함수의 매개변수

void Method1(SimpleClass obj); <- 함수호출 시 복사 생성자 호출

3. 함수의 반환값

SimpleClass Method2(void) { SimpleClass ob; return ob;} <-리턴시 복사생성자 호출

생성과 동시에 초기화

앞에서 계속 해본거

함수의 매개변수

매개변수를 값으로 받을 경우(포인터 말고) 객체를 복사해서 함수에서 사용한다.
따라서 복사 생성자 호출

함수의 리턴

만약 객체를 반환하는 함수 Method1이 있다하면
SimpleClass obj1 = Method1();
여기서 대입연산자 '=' 오른쪽에서는 SimpleClass를 저장할 수 있는 임시변수를 선언하고 거기에 리턴값을 복사해준다.
그 다음 임시변수에 있는 객체를 obj1에 복사해주고 임시변수의 메모리를 소멸된다.

const 참조자

기본 참조자는 상수 참조가 불가능하다.
임시변수가 생성된다는 점 때문에 const 참조자로 참조도 가능하다.
const SimpleClass &ref1 = Method1();
or
const SimpleClass &ref2 = SimpleClass();

0개의 댓글