클래스에 소속된 멤버 함수 중에서 시작과 끝을 알리는 함수
1. 생성자(Constructor)
여러개 존재할 수 있음.
1) 기본 생성자
class Knight
{
public:
Knight()
{
cout << "Knight() 기본 생성자 호출" << endl;
}
//~~~~~~~~
- 인자가 없는 생성자
-> 반환하는 타입이 없음
- 멤버 변수를 선언할 수 있음(기본 값을 넣어놓을 수 있음)
2) 복사 생성자
Knight(cons Knight& knight)
{
_hp = knight._hp;
_atk = knight._atk;
posY = knight._posY;
posX = knight._posX;
}
동일한 타입의 객체를 그대로 복사해서 사용할 때 쓴다.
int main()
{
Knight k2(k1);
Knight k3 = k1;
}
3) 암시적(Implicit) 생성자
생성자를 명시적으로 만들지 않으면 기본 생성자가 컴파일러에 의해 자동으로 만들어진다.
단, 명시적으로 생성자를 만들면 자동으로 만들지 않는다.
4) 타입 변환 생성자
Knight(int hp)
{
_hp = hp;
_atk = 10;
_posX = 0;
_posY = 0;
}
인자를 하나만 사용하는 기타 생성자를 말한다.
(1) 명시적 형변환
int num = 1;
float f = (float) num;
num의 타입을 의도적으로 float으로 변환함.
(2) 암시적 형변환
double d = num;
컴파일러가 자동으로 타입을 변환시킴.
Knight k5;
k5 = 1;
위와 같이 설정하면, 타입 변환 생성자를 이용하기 때문에 k5의 체력이 1이 되어버린다.
따라서 컴파일러가 자동으로 생성하지 못하게 하기 위해서 explicit을 붙여줄 수 있다.
explicit Knight(int hp)
{
_hp = hp;
_atk = 10;
_posX = 0;
_posY = 0;
}
2. 소멸자(Destructor)
//~~~~~
~Knight()
{
cout << "Knight() 소멸자 호출" << endl;
}
//~~~
- 오직 1개만 존재할 수 있음
'기초 C++ 스터디' 카테고리의 다른 글
5-0. 객체 지향 (0) | 2023.05.25 |
---|---|
번외) 파일 분할 관리 (0) | 2023.05.25 |
4-11. 포인터 최종 정리 (0) | 2023.05.23 |
4-10. 다차원 배열 (0) | 2023.05.23 |
4-9. 멀티 포인터 (0) | 2023.05.23 |