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
|
#include <iostream>
using namespace std;
/*
복사 생성자 함수
(1) 객체 생성시 객체를 인자로 줄경우
A aa; => 생성자호출
A bb(aa); => 복사생성자호출
(2) 객체 생성시 객체를 대입할 경우
A aa => 생성자 호출
A bb = aa; => 복사생성자호출
(3) member function의 매개변수로 객체를 선언할 경우
void A::disp(A aa) => 복사생성자 호출
(4) 멤버함수에서 객체를 리턴할 경우
A getObject() {
return 객체; //복사생성자호출
}
2. 객체의 모든 멤버의 값을 복사하는 기능을 제공
3. 기본적으로 얕은 복사를 제공한다.
4. 깊은 복사는 기본적으로 제공하지 않기 떄문에 개발자가 필요에 의해 제공해야한다.
*/
class Apple {
int a;
int b;
public :
Apple(int a = 0, int b = 0) {
this->a = a;
this->b = b;
}
Apple(const Apple& aa) { //복사생성자
cout << "복사 생성자 호출" << endl;
a = aa.a;
b = aa.b;
}
void setterA(int a) {
this->a = a;
}
int getterA() {
return a;
}
void setterB(int b) {
this->b = b;
}
int getterB() {
return b;
}
};
void main() {
Apple bb(10, 20);
Apple aa;
cout << aa.getterA() << "\t " << aa.getterB() << endl; //0, 0
cout << bb.getterA() << "\t " << bb.getterB() << endl; //10, 20
Apple cc(bb); //복사 생성자 호출
cout << cc.getterA() << "\t " << cc.getterB() << endl;
}
|
cs |
'Programming > [C++]' 카테고리의 다른 글
[C++] cout object(씨아웃 오브젝트) (0) | 2018.03.21 |
---|---|
[C++] 복사 소멸자 (0) | 2018.03.21 |
[C++] 생성자 함수 (0) | 2018.03.21 |
[C++] const에 대해 (0) | 2018.03.21 |
[C++] string 구조 (0) | 2018.03.20 |