함수와 참조, 복사생성자
1. c++에서 함수의 인자전달 방법 (1) call_by_value 작동과정 인수의 값을 전달함 -> 함수가 호출되면 매개 변수가 스택에 생성됨 -> 호출하는 코드에서 값을 넘겨줌 ->호출하는 코드에서 넘어온 값이 매개 변수에 복사됨 * 생성자와 소멸자의 비대칭 으로 실행되는 문제점이 있음. (2) call_by_address 작동과정 인수의 주소를 전달 ( 함수의 매개 변수는 포인터 타입) -> 함수가 호출되면 포인터 타입의 매개 변수가 스택에 생성됨 -> 호출하는 코드에서는 명시적으로 주소를 넘겨줌 * 호출하는 코드에서 넘어온 주소 값이 매개 변수에 저장됨 (3) call_by_reference 작동과정 함수의 매개 변수를 참조 타입으로 선언 *참조 매개 변수라고 부름( 참조 매개 변수는 실인자 변수를 참조함) *참조매개 변수의 이름만 생기고 공간이 생기지 않음 * 참조 매개 변수는 실인자 변수 공간 공유 * 참조 매개 변수에 대한 조작은 실인자 변수 조작 효과 2. 객체를 복사하는 코드 3. 객체복사시 복사 생성자가 실행됨. (1) 얕은 복사 개념 : 객체의 멤버를 1:1로 복사함 *객체의 멤버 변수에 동적 메모리가 할당된 경우 사본은 원본 객체가 할당받은 메모리를 공유하는 문제 발생 (2) 깊은 복사 개념 : 객체의 멤버를 1:1로 복사함 * 객체의 멤버 변수에 동적 메모리가 할당된 경우 사본은 원본이 가진 메모리 크기 만큼 별도로 동적 할당하고 원본의 동적 메모리에 있는 내용을 사본에 복사함 * 완전한 형태의 복사라서 얕은 복사의 문제점...