[C++] 외부함수들을 멤버함수로 변환하고 비교해보기(구조체)

2022. 6. 2. 19:02코딩 1막 <C++개념편>/코딩 1막 <C++응용편>

728x90

* 멤버함수가 무엇인지, 외부함수는 무엇인지 서로 비교하고 어떤 상황에서 유리한지 생각해보자.

* 코딩의 전체적인 구조나 흐름은 멤버함수를 짤때 더 효율적이고 가속성이 좋은 것 같다.

 

// 실습_구조체변수를 멤버변수로 썼던 외부함수들을 멤버함수로 변환시켜보자
#include <iostream>
#include <string>

using namespace std;

struct Monster
{
	string name;
	int lv;
	int hp;
	int damage;

	// 멤버함수
	void PrintInfo()
	{
		cout << "이름 : " << name << endl;
		cout << "레벨 : " << lv << endl;
		cout << "체력 : " << hp << endl;
		cout << "데미지 : " << damage << endl;
	}

	void SetInfo(string newName, int newLv, int newHp, int newDamage)
	{
		name = newName;
		lv = newLv;
		hp = newHp;
		damage = newDamage;
	}
};

// 구조체의 멤버변수들을 출력하는 외부함수
void PrintInfo(Monster target)
{
	cout << "이름 : " << target.name << endl;
	cout << "레벨 : " << target.lv << endl;
	cout << "체력 : " << target.hp << endl;
	cout << "데미지 : " << target.damage << endl;
}

// 구조체의 멤버변수들의 값을 셋팅하는 외부함수
void SetInfo(Monster* target, string newName, int newLv, int newHp, int newDamage)
{
	target->name = newName;
	target->lv = newLv;
	target->hp = newHp;
	target->damage = newDamage;
}



void main()
{
	Monster monsterA;

	monsterA.SetInfo("골렘", 100, 500000, 30000);
	monsterA.PrintInfo();

	Monster monsterB;
	monsterB.SetInfo("슬라임", 5, 500, 50);
	monsterB.PrintInfo();


	/*
	Monster monsters[] =
	{
		{ "골렘", 100, 500000, 30000 },
		{ "다크나이트", 50, 30000, 1000 },
		{ "위자드", 15, 1500, 100 },
		{ "슬라임", 5, 500, 50 },
		{ "리본돼지", 10, 1000, 80 }
	};
	*/
}

출력 결과

 

728x90