#include<iostream>
#include<string.h>
using namespace std;
class Unit{
char* str;
public:
Unit(){
cout<<"I'm a default constructor\n";
str=NULL;
}
~Unit(){
cout<<"I'm a destructor\n";
if(str!=NULL){
delete[] str;
str=NULL;
}
}
Unit(Unit& agUnit){
cout<<"I'm a copy constructor\n";
str = new char[strlen(agUnit.str)+1];
strcpy(str,agUnit.str);
}
Unit(char* agStr){
cout<<"I'm a default constructor with parameters\n";
int strLength = strlen(agStr);
str=new char[strLength+1];
strcpy(str,agStr);
}
void set(char* agstr){
strcpy(str,agstr);
}
void show(){
cout<<str<<endl;
}
};
int main(){
Unit A("TEST 1");
Unit B=A;
cout<<"-------------------------------\n";
A.set("TEST 2");
A.show();
B.show();
}
---------------------------------------------
b를 a의 값을 참고해 생성하면 깊은복사가 가능하다.
b를 a의 주소로 참고해 생성하여 얕은복사가 된 실행결과는 전 게시물을 참고하세요.http://aicode.co.kr/CPPcode/477
Tip!
-delete를 이용해 포인터를 해제시켜주면 메모리 누수를 막을 수 있다.
---------------------------------------------
실행결과
---------------------------------------------
I'm a default constructor with parameters
I'm a copy constructor
-------------------------------
TEST 2
TEST 1
I'm a destructor
I'm a destructor
--------------------------------
Process exited after 0.01744 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
댓글 0
번호 | 제목 | 글쓴이 | 최근 수정일 | 조회 수 |
---|---|---|---|---|
공지 | 안내사항 | 관리자 | 2019.12.21 | 159 |
76 | 모호성 발생 | 관리자 | 2019.02.19 | 143 |
75 | 디폴트 인자 | 관리자 | 2019.02.19 | 2204 |
74 | 생성자 중복 -복사 생성자 | 관리자 | 2019.02.19 | 138 |
73 | 생성자 중복 응용 | 관리자 | 2019.02.19 | 86 |
72 | 생성자 중복 2 | 관리자 | 2019.02.19 | 85 |
71 | 생성자 중복 | 관리자 | 2019.02.18 | 86 |
70 | 함수 중복-매개변수 | 관리자 | 2019.02.18 | 86 |
69 | 함수 중복 | 관리자 | 2019.02.18 | 83 |
68 | 클래스와 포인터 참조를 사용한 성적관리 프로그램 | 관리자 | 2019.02.18 | 88 |
67 | 두 수를 내림차순 정렬하기 | 관리자 | 2019.02.13 | 90 |
66 | 포인터를 이용한 성적관리 프로그램 | 관리자 | 2019.02.13 | 161 |
65 | 포인터확장 | 관리자 | 2019.02.13 | 84 |
64 | 참조반환 | 관리자 | 2019.02.12 | 84 |
63 | 참조 | 관리자 | 2019.02.12 | 82 |
62 | 객체포인터의 동적할당과 해제 | 관리자 | 2019.02.12 | 88 |
61 | new와 delete | 관리자 | 2019.02.12 | 86 |
60 | 객체 포인터 사용 | 관리자 | 2019.02.12 | 88 |
59 | 포인터 사용하기 | 관리자 | 2019.02.12 | 87 |
58 | 배열을 잘못 사용한 예 | 관리자 | 2019.02.12 | 83 |
57 | 배열기초 | 관리자 | 2019.02.11 | 86 |
56 | 배열사용하기 | 관리자 | 2019.02.11 | 86 |
55 | 클래스 깊은 복사 구현 | 관리자 | 2019.02.11 | 89 |
54 | friend 함수 사용 값이 더 큰 객체 반환 | 관리자 | 2019.02.11 | 99 |
53 | 두 사각형 넓이 더하기 friend의 유/무 | 관리자 | 2019.02.11 | 143 |
52 | friend함수 사용하기 | 관리자 | 2019.02.11 | 87 |
51 | 함수로 클래스 반환하기 | 관리자 | 2019.02.11 | 86 |
50 | 함수 입력인자로 클래스 객체 전달 | 관리자 | 2019.02.07 | 90 |
» | 클래스 깊은복사 과정 확인 | 관리자 | 2019.02.07 | 89 |
48 | 클래스의 얕은복사 과정 확인 | 관리자 | 2019.02.07 | 93 |
47 | 컴퓨터시스템을 클래스로 구현하기 | 관리자 | 2019.01.31 | 86 |