inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘

트리 구현 연습

maketree static

해결된 질문

372

Hyobin Kim

작성한 질문수 81

1

main함수가 static이니까 maketree도 static으로 맞춰준다고 하셨는데 구체적인 이유를 알 수 있을까요?

C#

답변 2

7

Rookiss

당장 크게 중요하진 않지만 처음 배울 땐 개념이 헷갈리는 부분인데,

static 함수에서 static이 아닌 함수를 호출하려면
해당 객체를 만들어서 사용해야 하기 때문입니다.
(일단 static을 제거해보면 바로 에러가 나는 것을 확인할 수 있을거에요)

static이라 함은 그 클래스에 유일한 '공용' 함수라는 얘기고,
어떤 특정 객체에 종속적이지 않다는 의미이기도 합니다.
반대로 static이 아닌 일반 함수는 특정 '객체'에 종속적이기 때문에
내부 멤버 변수에 접근할 수 있다는 특징이 있습니다.

예를들어 스타크래프트 마린을 설계할 때
각 마린마다 체력이 다를테니
int hp는 내부 멤버 변수로 만들고, SetHp도 static이 아닌 함수로 만들겠죠.
그러면 Marine m = new Marine();
을 해준 다음에 m.SetHP() 등으로 사용할 수가 있습니다.

반면 모든 마린들이 공통적으로 갖는 특징은
특정 객체에 종속적이지 않게 만드는 것을 고려할 수 있는데,
가령 마린이 노래 부르는 함수 Sing()은 모든 마린이 공통적으로 사용할테니
static으로 만든다고 가정해봅시다.
이렇게 되면 Sing()는 static 함수로 만들어야 하고,
Marine.Sing()으로 바로 사용하게 됩니다. (Marine m = new Marine 필요 없음)

특정 객체 Instance에 종속적이냐 아니냐에 따라 static 사용 여부가 갈리는데,
어찌됐건 main함수는 static이라서 어떠한 객체에도 종속적이지 않고
위치만 class Program 내부에 있을뿐입니다.
이 상태에서 MakeTree를 static이 아닌 함수로 만들어주면,
main 내부에서 호출이 불가능하고
정말 억지로 호출하려면 new Program() 형식으로 객체를 만들어서 사용할 수밖에 없게 됩니다.

0

Hyobin Kim

답변 정말 감사해요 여태 Static의 의미는 아는데 언제 써야 할 지 몰랐는데 갈피를 잡은거 같습니다

말씀해주신걸 요약하면

Static은 해당 클래스의 Instance 없이 바로바로 사용할 수 있다(Instance에 독립적이다)

Non Static은 해당 클래스의 Instance가 있어야 접근이 가능하다(Instance에 종속적이다)

그리고 저 경우에서는 Static 함수인 main에서 non static 함수인 MakeTree를 부르려면, Program 클래스의 instance를 생성하는건..... 아무리봐도 이상하네요 ^^

항상 답변 빨리 해주셔서 감사합니다

게임개발에서 주로 어느부분에 알고리즘들이 쓰이는지 궁금합니다

0

170

2

글꼴 바꿔도 자간이 좁아 찌그러져보이시는 분들

0

87

1

NullReferenceException 예외) 같은 실수하시는분 계실까봐 남겨요

0

66

1

parent를 Pos타입으로 만든 이유

0

74

1

콘솔창에 격자가 안나옴 미로 생성 X

0

133

1

격자 생성 안됨 무한루프

0

113

1

BFS 질문

0

143

2

격자 무한 출력

0

166

2

A* 의 PriorityQueue 관련 질문입니다

0

155

2

vscode에서 원그리기

0

179

1

환결설정 강의 원 그리기

0

122

1

15-17분

0

86

1

3:16초에 근데 이렇게 해가지고 부분에 "{}"를 만들어서 자식 node들을 생성하던데 왜 중괄호로 감싸게 만드는 건가요?

0

141

2

동적 배열 관련 질문입니다!

0

209

1

Big-o 표기법에서 시간 복잡도

0

167

1

7:40에서 언급하신 색상이 날아가는 문제 이해를 못하겠습니다

0

151

1

트리구현연습 강의 질문있어요

0

142

1

창은 뜨는데 맵이 나타나지 않아요.

0

174

1

Ctrl F5 하면 나오는 창은 어디서 설정할까요??

0

271

1

void CalcPathFromParent(Pos[,] parent)에 대해서

0

202

2

NullReferenceException예외가 발생했을때 어떻게 해야하나요?

0

228

1

[해결] 환경설정 강의에서 원이 이상하게 그려지는 문제

3

310

2

오른손 법칙에서 플레이어 점이 안 움직입니다

0

243

2

맵 만들기 오류

0

179

1