본문 바로가기
728x90
반응형

C++59

[C++기초] 깊은 복사, 얕은 복사 - 이동시맨틱,이동생성자,이동 대입연산자 지금까지는 깊은복사를 하기 위해 노력했는데 이번에는 깊은복사의 단점을 보완하기 위해 얕은복사를 해줄것이다. 깊은복사의 단점은 객체의 크기가 클 수록 많은 양의 복사를 수행해야한다. 그래서 이번에는 깊은복사가 쓸모가 없어지는 경우에 대해서 알아보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 #includ.. 2022. 1. 16.
[C++기초] 깊은복사, 얕은 복사 - 대입연산자 대입 연산자 그동안에는 객체가 생성될 때 복사가 같이 이뤄지는 경우 (복사생성자)를 봐왔는데 이번에는 객체가 먼저 생성되고 -> 이후에 대입이되는 코드를 짜보려한다. 이럴때도 연산자 오버로딩이 쓰인다. 연산자 오버로딩을 하기 위한 메서드를 만들면 'operator=' 메서드를 만들면 된다. s3=s1;은 사실상 s3.operator=(s1); 이라 생각해도 된다. 이렇게 s3=s1인 등호 연산을 실시하면 얕은복사가 일어난다. 이를 방지하기 위해 operator= 메서드의 코드를 채워볼 것이다. 우선 operator메서드에서 매개변수를 &rhs인 레퍼런스 변수로 받아올 건데 그냥 rhs만 받아오면 s1이 rhs에 복사된다. 하지만 레퍼런스변수를 사용하면 s1이 rhs에 복사되는 형태가 아닌 rhs가 s1을.. 2022. 1. 16.
[C++기초] 깊은복사와 얕은 복사 ,복사생성자 얕은 복사(참조만 복사) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include using namespace std; int main() { int* a = new int(5); int* b = new int(3); a = b; cout 2022. 1. 15.
[C++기초] 동적할당 동적 할당 프로그램의 성능을 좌우하는 것 -> 시간과 공간(메모리) 동적할당에서 '할당'은 메모리 할당을 의미한다. 동적할당의 정의는 프로그램 실행 중에 변수를 메모리에 할당하는 것을 의미한다. 기본자료형을 통해 동적할당을 하는 간단한 예시를 살펴보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include using namespace std; int main() { int* a = new int(5); cout 2022. 1. 15.
728x90
반응형