C++

02. class(생성자, 소멸자)

Honyack 2023. 11. 10. 18:54

생성자: 클래스 생성시 호출되는 함수

소멸자: 클래스 소멸시 호출되는 함수

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