생성자: 클래스 생성시 호출되는 함수
소멸자: 클래스 소멸시 호출되는 함수
class Player
{
public:
Player(); //생성자
~Player(); //소멸자
};
class Player
{
public:
Player()
{
cout << "플레이어 생성자 호출" << endl;
}
~Player()
{
cout << "플레이어 소멸자 호출" << endl;
}
};
int main()
{
Player player;
return 0;
}
Player* player = new Player;
동적 할당하고 delete 하지 않으면 생성자만 호출된다.
#include <iostream>
using namespace std;
class Player
{
int x;
int y;
int Hp;
public:
Player()
{
x = 0;
y = 0;
Hp = 10;
}
~Player()
{
}
int GetX() { return x; }
int GetY() { return y; }
int GetHp() { return Hp; }
};
int main()
{
Player* player = new Player;
cout << "플레이어 x좌표:" << player->GetX() << endl;
cout << "플레이어 y좌표:" << player->GetY() << endl;
cout << "플레이어 HP:" << player->GetHp() << endl;
delete player;
return 0;
}
생성자를 이용한 값 초기화
Player()
{
x = 0;
y = 0;
Hp = 10;
}
Player() :x(0), y(0), Hp(10) {};
위 코드를 아래 처럼 초기화 할수도 있다.
#include <iostream>
using namespace std;
class Player
{
const char* name;
public:
Player(const char* name)
{
this->name = name;
cout << name << " 생성자 호출" << endl;
};
~Player()
{
cout << name << " 소멸자 호출" << endl;
}
};
Player player("데이터");
int main()
{
Player player1("스택");
Player* player2 = new Player("힙");
delete player2;
return 0;
}
객체를 어떤 영역에 생성하느냐에 따라서 소멸자 호출 순서가 바뀐다.
'C++' 카테고리의 다른 글
스마트 포인터 (0) | 2024.03.12 |
---|---|
함수 포인터(다양한 방법) (0) | 2024.03.12 |
04. namespace (0) | 2023.11.17 |
03. class(상속) (0) | 2023.11.10 |
01. class(class 기본, Get, Set함수) (0) | 2023.11.10 |