C&C++

C++ [생성자] 편

Jero++ 2018. 12. 30. 22:31

CPP에서의 클래스는 생성자와 소멸자가 있는데 그중 생성자를 보겠습니다


생성자 개념

생성자는 객체가 생성될 때 자동으로 실행됩니다

만약 우리가 생성자를 지정하지 않았다면 생성자는 자동으로 만들어져요(우리 눈에는 안보이지만)


생성자 형식


생성자는 반환자료형을 명시하지 않고 함수이름을 클래스이름과 동일하게 만들면

생성자가 만들어져요

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
using namespace std;
 
class A{
public:
    A(){
        cout << "생성자 호출!!!" << endl;
    }
};
 
int main(){
    A a;
    //실행결과:
    //생성자 호출!!!
}
 
cs
ㅇㅇ

이런식으로 생성자를 만들 수 있습니다!


사실 생성자는 우리가 만들지 않아도 프로그램이 실행되면 자동으로 만들어져요

우리눈에 안보일 뿐이지만 실제로는


1
2
3
A(){
 
}

cs


요런식으로 만들어져있다고 생각하시면 되요


다만 우리가 생성자를 만들게 되면 바로 오버로딩이 됩니다


//링크 (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
#include<iostream>
using namespace std;
 
class Player{
public:
  int atk;
    int hp;
 
    Player (int atk, int hp){
        this->atk = atk;
        this->hp = hp;
    }
    Player (int atk){
        this->atk = atk;
        this->hp = 100;
    }
};
int main(){
    Player p1(4590);
    Player p2(65);
    cout << p1.atk << "\t" << p1.hp << endl;  //45    90
    cout << p2.atk << "\t" << p2.hp << endl;  //65    100
}
 
 
cs

이런식으로 간단하게 캐릭터 클래스를 만들 수 있겠습니다


그리고 또한가지

C에는 없던 변수 초기화방법을 사용할 수 있습니다

C++만의 변수초기화 방법을 생성자에서 사용이 가능합니다


//링크 (C++ [여러가지 변수 초기화방법] 편)


1
2
3
4
5
6
7
8
9
10
11
class Player{
public:
  int atk;
    int hp;
 
    Player (int atk, int hp) atk(atk), hp(hp){
        
    }
};
 
 
cs