[C++] 함수의 매개변수로 구조체를 넣어보고 할당과 해제 순서 테스트하기

2022. 6. 7. 16:57코딩 1막 <C++개념편>/코딩 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(Monster& target)
	{
		cout << "복사 생성자 호출" << endl;
		name = "복사";
	}

	// 오버로딩된 형태의 생성자 만들기
	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;
	}
};

// Monster monsterD("D", 1, 1);

void Func(Monster target)
{
	Monster monsterE("E", 1, 1);
}


void main()
{
	Monster monsterA("A", 1, 1);
	Monster monsterB("B", 100, 10);
	Monster monsterC("C", 100, 10);
	cout << "---함수 호출 전---" << endl;
	Func(monsterA);
	cout << "---함수 호출 후---" << endl;
}

출력결과

* 복사생성자라는 새로운 개념이 등장했다.

* 복사생성자를 알기위해서 참조자라는 개념부터 알아야 한다.

* 포인트변수를 사용했던 이유를 참조자가 대신 해줄수 있다.

728x90