아무 값을 넣지 않고 함수를 호출하면 디폴트 값이 들어가도록 하는 문법이다.
디폴트 인자는 선언쪽에만 넣을 수 있다.
#include <iostream>
int Function(int _Value = 1);
int main() {
int a = Function(); // 3
int b = Function(10); // 30
return 0;
}
int Function(int _Value) {
return _Value * 3;
}
가장 우측부터 채워나가야 한다.
int Function(int _Value0, int _Value1 = 1, int _Value2 = 2, int _Value3 = 3);
int main()
{
Function(10/*, 1, 2, 3*/);
}
int Function(int _Value0, int _Value1, int _Value2, int _Value3)
{
return _Value0 * 3;
}
클래스의 객체 모두가 공유하는 개념의 값이 필요할 때가 있다.
객체 각각이 가지는 것이 아니고 모두가 같은 값을 공유할 수 있어야 한다.
class Monster{
public:
Monster(){
++MonsterCount;
}
int MonsterCount = 0;
};
int main(){
Monster NewMonster0 = Monster();
Monster NewMonster1 = Monster();
Monster NewMonster2 = Monster();
return 0;
}
(extern 변수는 이런 변수가 있을 것이라는 의미)
static은 class내 전역 변수를 만드는 것이다.
다른 클래스에서 사용할 수 없도록 private으로 선언해야 한다.
class Monster{
public:
Monster(){
++MonsterCount;
}
private:
static int MonsterCount;
};
int main(){
Monster NewMonster0 = Monster();
Monster NewMonster1 = Monster();
Monster NewMonster2 = Monster();
return 0;
}
#include <iostream>
class Monster
{
public:
// static 맴버함수
static int /*Monster::*/GetMonsterCount()
{
return MonsterCount;
}
Monster()
{
++MonsterCount;
}
private:
static int MonsterCount;
};
int Monster::MonsterCount;
class Player
{
public:
void Update()
{
if (0 >= Monster::GetMonsterCount())
{
}
std::cout << Monster::GetMonsterCount() << "의 몬스터가 남아있습니다" << std::endl;
}
public:
Player()
{
// 플레이어가 사용하면 안되므로 private으로 만들어야 한다.
// ++Monster::MonsterCount;
}
};
int main()
{
Monster NewMonster0 = Monster();
Monster NewMonster1 = Monster();
Monster NewMonster2 = Monster();
Player NewPlayer;
NewPlayer.Update();
}
내 지렁이게임 코드
선생님 지렁이게임 코드(방법 3개)