반응형 복사 생성자2 C++ 복사 생성자, 왜 그렇게 생겼냐? 복사생성자를 보면 이렇습니다. 클래스 이름 (const 클래스 이름 &참조변수) 즉, 상수로 선언된 참조자이며 type은 클래스(자기자신)이 되는 것입니다. 복사 생성자 자체는 원래 기존 값을 복사해 전달해주는 개념이라 이 과정에서 값이 바뀌어선 안됩니다.(복사인데 값이 바뀌게 된다면 복사가 아니겠죠?) 따라서 const로 선언된 것이고 정의되어 있습니다. 그렇다면 왜 참조자로 받느냐 인데......... 이걸 이해 하려면 우선 복사 생성자의 호출을 알아야 합니다. 복사생성자가 호출될 때는 1. 대입연산을 할 때 2. 매개 변수로 들어갈 때 3. 반환 값이 있을 때 즉, #include #include using namespace std; class A { int num; string name; publ.. 2019. 2. 24. C++ 복사 생성자란? 얕은복사와 깊은복사 저희는 기본적으로 변수를 선언하고 데이터 값을 입력하는 과정을 다음과 같이 진행합니다. int num_1 = 10; int num_2 = num_1; 이런식으로 선언하는 것이 일반적입니다. 하지만 C++에서는 컴파일러가 다음과 같이 바꿔서 계산을 하게 됩니다. int num_1(10); // int num_1 = 10; int num_2(num_1); // int num_2 = num_1; 이렇게 보면 함수 안에 매개변수를 넣는 것 처럼 보입니다. 실제로도 비슷합니다. 즉, C++은 C와 다르게 int num_1 = 10; 의 과정을 int num_1(10)으로 해석한다는 말입니다. 그렇다면 왜? 굳이? 이런식으로 바꿔 진행하느냐..... 바로 Class 때문입니다. Class를 선언한 후 사용하게 되면.. 2019. 2. 24. 이전 1 다음 728x90 반응형