1. 깊은 복사
class Test
{
public:
char* mPc ;
Test()
{
mPc = new char[ 10];
printf(" 일반생성자 \n");
}
Test(const Test& test)
{
mPc = new char[ strlen(test .mPc)+ 1];
strcpy(mPc ,test. mPc);
printf(" 복사생성자 \n");
}
};
int main ()
{
Test test1 ;
Test *test2 = new Test(test1 );
// 출력복사생성자
Test test3 (test1);
// 출력복사생성자
Test test4 = test1;
// 출력복사생성자
return 0 ;
}
김은 복사를 하여야 하는 이유...
복사함수를 오버라이딩 하지 않고 얕은 복사를 할경우 클래스의
동적할당된 맴버변수 의 메모리를 공유 하게 된다.
그래서 직접 복사함수를 오버라이딩 하여 동적 할당된 변수를 직접 관리 하여야 한다
'Programming > C++' 카테고리의 다른 글
16. 연산자 오버로드 (0) | 2017.12.20 |
---|---|
15. 함수포인터 (0) | 2017.12.20 |
14. 가상함수 활용 예 부모객체 함수 가리기 (0) | 2017.12.20 |
13. 다향성 가상함수 순수가상함수 가상파괴자함수 (0) | 2017.12.20 |
09. 파일 입출력 (0) | 2017.12.20 |
08. 문자열 함수 (0) | 2017.12.20 |
04. 메모리 관련 함수 (0) | 2017.12.20 |
01. 배열 요소중 가장 큰수 작은수 구하 (0) | 2017.12.20 |