반응형

복사생성자 2

[ C++ ] 10강. 깊은 복사, mutable, friend, static 멤버변수/함수

깊은복사 얕은 복사를 하면 주소값도 옮겨지기 때문에 소멸과정에서 오류가 난다 이에 내용은 같고 메모리는 다르게 만들어 줄 수 있도록 복사 생성자를 수정해줘야한다 //깊은 복사, 복사생성자 수정 예시 ArrayData::ArrayData(const ArrayData& copy) // 자기 자신이 인자로 들어올 때 : capacity(copy.capacity), used(copy.used) // 들어온거랑 똑같이 멤버변수 세팅 { data = new double[capacity]; // 동적할당은 새로운 매모리에 for (int i = 0; i < used; i++) // 내용은 모두 똑같이 복사 data[i] = copy.data[i]; } const 추가적인 내용 - const 객체 생성가능, const..

[ C++ ] 9강. 실습, 얕은 복사

실습하면서 알게된 점 1. 원본 데이터를 수정하고싶으면 &로 리턴해주면 된다 2. this는 클래스의 포인터 타입이다. 3. 포인터 타입은 -> 를 사용해야한다. 얕은 복사 Simple sum2(sim1) - 복사생성자를 생성하지 않아도 저절로 생성된 - 내용만 복사됨 문제점 - 동적할당 된 내용을 복사한다면, 주소값도 값이 복사되기 때문에 소멸될 때 런타임 오류가 일어남. -> 깊은 복사로 해결 가능 //lec9_Salesman.h #pragma once #include using namespace std; class Salesman { private: string name; double sales; public: Salesman(); ~Salesman(); Salesman(string name, do..

반응형