<aside> 💡 목차
</aside>
강의 자료 펼치기
객체지향 개념 모음 펼치기

복사생성자 호출할땐 동일 타입 생성자를 넣어주면 된다.
Fraction (const Fraction& fr); // 선언부
Fraction :: Fraction (**const Fraction& fr**) // 정의부
{
numerator = fr.numerator;
denominator = fr.denominator;
} // 매개변수로 들어온 개체의 속성값을 현재 개체의 속성값으로 설정
Fraction (const Fraction& fr); // 선언부
Fraction :: Fraction (**const Fraction& fr**) // 정의부
{
*this.numerator = fr.numerator;
*this.denominator = fr.denominator;
//or
this->numerator = fr.numerator;
this->denominator = fr.denominator;
} // this pointer로 값 복사.
// 이 때 this 는 생성자가 생성시키는 새로운 개체를 가르킴!
기본 값으로 분자1 분모2 넣었다헀을때
복사본 만들고싶을때 어떻게할거임?
Fraction 클래스 설계할때 가지고있는 분자나 분모값을 반환하는 함수를 인터페이스(퍼블릭) 영역에 두는게 가장 좋은 방법인데, 귀찮잖아?
그냥 객체 원본값 통으로 받아서 똑같은값을 가진 객체가 생기면 얼마냐 좋냐?
그래서 만들어진게 복사생성자
객체안에있는 데이터들을 뒤적뒤적해서 새로운 객체에 그대로 복붙해주는놈
1. 콘스트 무조건 왜 붙여야함?
-> 이미 선언된 객체의 데이터는 보호되어야하니 콘스트를 붙여줘야함.
2. 레퍼런스타입 왜붙임?
-> 만약 값에의한 복사를 하면, 원래 객체를 그대로 복사해와야하는데, 이러면 생성자가 만들어져야함, 즉, 메모리도 부족하고 무엇보다 큰 오버헤드가 발생함
-> 그 복사될 객체가 큰값을 가지고있으면 너무 부담돼~
-> 그래서 모든 객체의 인풋파라미터를 가지고올땐 래퍼런스타입으로 가져온다.
[C++관리함수] - 객체를 인풋 파라미터로 넣을땐 무조건 & , const
[묵시적 복사생성자 - 컴파일러는 기본적으로 복사생성자를 생성시킨다](https://cybecho.notion.site/1a19e31b01a74362b654ef787abad145)복사생성자는 컴파일러가 기본적으로 생성해줍니다