본문 바로가기

Programming/[C++]

[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
#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 = 0int b = 0) {
        this->= a;
        this->= b;
    }
    Apple(const Apple& aa) { //복사생성자
        cout << "복사 생성자 호출" << endl;
        a = aa.a;
        b = aa.b;
    }
    void setterA(int a) {
        this->= a;
    }
    int getterA() {
        return a;
    }
    void setterB(int b) {
        this->= b;
    }
    int getterB() {
        return b;
    }
};
 
void main() {
    Apple bb(1020);
    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