절차지향적 - 혼자서

객체지향적 - 여러사람, 확장성, 유지보수좋음


'사람이 정의한' 현실 세계에 존재하는 모든 것을 객체로 정의


Class A{


member variable // == field

// 복사 생성자

// 생성자 함수

// 소멸자

// 대입연산자 함수

// 외부 함수

member function // == method


}


클래스 밖에 있는 함수를 외부함수로 칭함. main도 외부 함수



1. 생성자 함수

1-1. 객체 등록시 자동호출이 되어지는 함수

       역할 : 객체필드 초기화 (쓰레기 값 방지), 객체 등록 (디폴트)

1-2. 접근지정자를 주로 public으로 지정

1-3. 오버로딩이 가능하다 (명시적 + 암시적)

1-4. const 멤버함수로 만들 수 없다

1-5. 리턴타입이 없다

1-6. 함수이름이 클래스이름과 동일하다

1-7. 디폴트 생성자 함수는 생성자 함수를 명시적으로 제공하지 않을 경우에만 제공된다


2. 복사생성자 함수

2-1. 객체 생성시 매개변수로 객체를 넘겨줄 경우 

2-2. 객체 생성시 객체를 대입할 경우 

2-3. 멤버 함수의 매개변수로 객체를 선언할 경우

2-4. 멤버함수에서 객체를 리턴할 경우


* 얕은 복사, 깊은복사

// defalut는 얕은 복사

// 깊은복사는 개발자가 직접코딩해야한다 (필드를 포인터로 사용할때)


* this를 쓰는이유 

: 객체를 구별하기 위해

// 1. 지역변수와 필드명이 같을때

// 2. 메소드에서 자기자신을 리턴할때

// return this는 반복적으로 어떤일을 할때

// 자기자신을 가리키는 객체포인터



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
#include <iostream> 
 
using namespace std;
 
class A
{
    int *p;
public:
    A(int i = 0)
    {
        p = new int;
        *= i;
    }
    ~A()
    {
        delete p; // 메모리 공간을 아끼기위해서
    }
    A (const A& aa) 
    {
        p = new int;
        *= aa.p;
    }
 
    int getP() {return *p;}
 
    
};
 
void main()
{
    A aa(10);
    A bb(aa); // 복사생성자 호출
 
    cout<<bb.getP()<<endl;
}
 
cs


'C,C++ > CONCEPT' 카테고리의 다른 글

Day04-02  (0) 2018.03.08
Day04-01  (0) 2018.03.08
Day03-02. 생성자, 복사생성자 호출  (0) 2018.03.07
Day03-03. 생성자와 소멸자의 개념  (0) 2018.03.07
Day03-05. 생성자함수, 복사생성자함수, 소멸자함수 호출순서  (0) 2018.03.07
Posted by 너래쟁이
: