.h/.cpp로 나누는 이유Player::가 왜 필요한지.h에는 무엇을 두고, .cpp에는 무엇을 두는지 말로 설명할 수 있다.Player::Attack()처럼 Player::를 붙이는 이유:Player.h(선언) + Player.cpp(정의) 쌍으로 관리하고,#include "Player.h"로 “선언”을 가져옵니다.Player.h (선언/인터페이스)
Player.cpp (정의/구현)
Main.cpp (사용)
#pragma once
class Player {
public:
void Attack();
void Die();
void HealMe(int value);
private:
int _hp = 0;
int _attack = 0;
int _defence = 0;
};
헤더 작성 팁:
using namespace std;를 두지 않는 게 안전합니다(전역 오염).<iostream> 같은 무거운 include도 가능하면 .cpp로 옮깁니다.#include "Player.h"
#include <iostream>
void Player::Attack() { std::cout << "Attack" << '\n'; }
void Player::Die() { std::cout << "Die" << '\n'; }
void Player::HealMe(int value) {
_hp += value;
std::cout << "Heal " << _hp << '\n';
}
#include "Player.h"
int main()
{
Player p;
p.HealMe(10);
p.Attack();
return 0;
}
#include "Player.h"를 안 했거나, 헤더에 선언이 없음.cpp에 정의(구현)가 없거나, 프로젝트에 .cpp가 포함되지 않음<iostream>을 넣는 걸 조심해야 할까?using namespace std;를 두면 어떤 문제가 생길 수 있을까?