[C++] 22. 생성자와 소멸자

2022. 6. 7. 16:21코딩 1막 <C++개념편>

728x90
#include <iostream>

using namespace std;

// 구조체의 생성자와 소멸자
// 생성자 : 메모리에 할당될 때 호출되는 함수
// 생성자는 초기화할때 쓰임
// 소멸자 : 메모리에서 해제될 때 호출되는 함수
struct Monster
{
	// 필드(구조체의 속성)
	string name;
	float hp;
	float damage;

	// 기본생성자의 형태
	// 구조체이름() { }
	Monster()
	{
		cout << "기본 생성자 호출" << endl;
		name = "초기화";
		hp = 0;
		damage = 0;
	}

	// 생성자 오버로딩
	Monster(string _name, float _hp, float _damage)
	{
		SetInfo(_name, _hp, _damage);
		cout << name << "생성자 호출" << endl;
	}

	// 소멸자의 형태
	// ~구조체이름() { }
	~Monster()
	{
		cout << name << "소멸자 호출" << endl;
	}

	void PrintInfo()
	{
		cout << name << endl;
		cout << hp << endl;
		cout << damage << endl;
	}

	void SetInfo(string _name, float _hp, float _damage)
	{
		name = _name;
		hp = _hp;
		damage = _damage;
	}
	// 함수(구조체의 기능)
	void Hit(float _damage)
	{
		hp -= _damage;
	}
};

// 전역변수는 데이터영역
// 데이터영역에 쌓이는 것은 프로그래밍이 시작될때 할당되고 끝날때 해제된다
Monster monsterD("D", 1, 1);

void main()
{
	Monster monsterA("A", 1, 1);
	Monster monsterB("B", 100, 10);
	Monster monsterC("C", 10, 1);
}

출력결과

 

728x90

'코딩 1막 <C++개념편>' 카테고리의 다른 글

[C++] 24. 동적할당이란  (0) 2022.06.07
[C++] 23. 복사생성자 (참조자의 개념)  (0) 2022.06.07
[C++] 21. 랜덤  (0) 2022.06.02
[C++] 20. 입력  (0) 2022.06.02
[C++] 19. 멤버함수  (0) 2022.06.02