짧은 규칙:
int, float 같은 작은 기본 타입은 값 전달이 자연스럽습니다.const&를 먼저 고려합니다.int Add(int a, int b) { return a + b; } // 값 전달이 자연스러운 예
nullptr)nullptr일 수 있으므로 널 체크가 필요void Heal(StatInfo* player, int amount)
{
if (player == nullptr)
return;
player->hp += amount;
}
void Func(StatInfo& player)처럼 원본을 참조하는 방식입니다.player.hp처럼 . 사용)nullptr를 담을 수 없으므로(“없다” 상태 표현 불가) 의도가 더 명확해짐void HealRef(StatInfo& player, int amount)
{
player.hp += amount;
}
const StatInfo&는 “복사 비용 없이, 읽기 전용으로 전달”할 때 가장 자주 쓰는 형태입니다.void PrintPlayer(const StatInfo& player)
{
std::cout << player.hp << '\n';
}
OUT은 C++ 문법이 아니라, “이 인자는 함수가 채워주는(out) 용도다”라는 의도 표시용 표기입니다.#define OUT
void CreateMonster(OUT StatInfo& monster)
{
monster.hp = 40;
monster.attack = 8;
monster.defence = 1;
}
const&를 쓰는 이유는?