본문 바로가기

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
#include <iostream>
using namespace std;
/*
    생성자 함수
    1. 객체 등록시 자동호출되어지는 함수
        역할 : 객체필드 초기화 (쓰레기 값 방지)
                객체 등록 (디폴트)
    2. 접근지정자를 주로 public으로 지정
    3. 오버로딩이 가능하다 (명시적 + 암시적)
    4. const(고정 java에서 final(오버라이딩 금지)) member function으로 만들 수 없다
    5. 리턴 타입이 없다
    6. 함수 이름이 클래스명과 동일하다.
    7. 디폴트 생성자 함수는 생선자 하수를 명시적으로 제공하지 않을 경우에만 제공된다
*/
class A {
    //1. 생성자 함수
    int a;
    int *p;
public : //명시된 지점부터 새로운 명시 지정자가 나올때까지 적용, 명시하지 않으면 private
    A(int i = 1) {
        a = i;
        p = new int[i];
        cout << "디폴트에게 매개 변수 사용 " << endl;
    }
 
    //    A() {
    //    a = 0; //필드 초기화를 하지 않으면 쓰레기 값
    //    cout << "생성자 " << a << endl;
    //}
    //A(int i) {
    //    a = i;
    //    cout << "생성자2 " << a << endl;
    //}
    //위 두가지 클래스가 함펴져서 제일 위 클래스가 된다
    
    //2. 복사 생성자 함수
    /* 기능 : 복사
    생성되는 경우
    1. 객체 생성 시 매개 변수로 객체를 넘겨줄 경우
    2. 객체 생성 시 객체를 대입할 경우
    3. 멤버함수의 매개 변수로 객체를 선언할 경우
    4. 멤버함수에서 객체를 리턴할 경우
    * 깊은 복사(필드를 포인터로 사용했을 경우)를 할 경우 명시적으로 만들어야한다
    * 얕은 복사는 그럴 필요가 없다
    * 접근 지정자를 주로 public을 사용*/
    
    //3. 소멸자 함수
    
    //4. 대입 연산자 함수
};
void main() {
    //A aa; //객체 생성(stack메모리, 동적메모리 X)
    //A *p = new A;//인수를 안 줄때는 ()가 없다.
    //A aa;
    A bb(9);
    
}
cs

 

'Programming > [C++]' 카테고리의 다른 글

[C++] 복사 소멸자  (0) 2018.03.21
[C++] 복사 생성자  (0) 2018.03.21
[C++] const에 대해  (0) 2018.03.21
[C++] string 구조  (0) 2018.03.20
[C++] 연산자 함수를 만들지 못하는 연산자의 종류  (0) 2018.03.20