article thumbnail image
Published 2024. 3. 11. 17:00

 

1. 개념

1.1. 복사 생성자

한 객체의 내용을 다른 객체로 복사하여 생성된 생성자

복사 생성자가 정의되어 있지 않으면, 디폴트 복사 생성자가 존재하는데 이 디폴트 복사 생성자는 얕은 복사를 기반으로 동작

 

1.1.1. 얕은 복사(Shallow Copy)

객체를 복사할 때, 해당 객체만 복사

복사된 객체의 인스턴스 변수는 원본 객체의 인스턴수 변수와 같은 메모리 주소값을 참조하게 됨 -> 복사한 대상이 바뀌면은 복사된 객체도 바뀌는 문제 발생

 

1.1.2. 깊은 복사(Deep Copy)

객체를 복사할 때 인스턴스를 변수 전부를 복사

새롭게 동적할당을 하고, 원본의 데이터를 복사하게 됨

 

1.2. 대입 연산자 오버로딩

연산자를 오버로딩 (재정의) 한 것

대입 연산자도 마찬가지로 디폴트 대입 연산자는 얕은 복사를 하게됨

따라서 깊은 복사를 원하면 대입 연산자를 오버로드 하여 깊은 복사를 진행해야 함

 

1.3. 고정 소수점

소수 부분을 표현할 비트의 수를 미리 정해두고 10진수를 2진수로 변환한 값 그대로 비트에 넣는 것

소수 부분을 표현할 비트의 수가 커질 수록 오차는 줄어감

 

'42 Seoul' 카테고리의 다른 글

[42Seoul] CPP Module 01  (0) 2024.03.09
[42Seoul] CPP Module 00  (0) 2024.03.08
[42Seoul] Philosophers  (0) 2023.05.04
[42 Seoul] minishell  (0) 2023.03.17
[42 Seoul] push swap  (0) 2023.02.24
복사했습니다!