코드 질문입니다
class Room<T>
{
public T data;
① public Room<T> Next ;
② public Room<T> Prev ;
}
class RoomList<T>
{
③ public Room<T> Head = null;
④ public Room<T> Tail = null;
public int count = 0;
public Room<T> AddLast(T data)
{
⑤ Room<T> NewRoom = new Room<T>();
}
}
[1] 5번은 생성자 호출로 객체(NewRoom)를 만들었는데 1~4번은 왜 생성자 호출이 없는지 궁금합니다ㅠ
[2] 그리고 위 2개의 Class안에 생성자가 있어야 하는것 아닌지요? 그러니까 . . .
class Room<T> { public Room<T>(){ ... } →생성자 }
이런 식으로 있어야 하는거 아닌가 해서요ㅠ ( 아 기본생성자는 자동으로 만들어지기 때문인게 답일까요? )
Answer 4
1
생성자 호출없이 만든게 아니고, 아직 안 만들고 비워둔 상태입니다.
Next, Prev, Head, Tail 모두 null (없는) 상태이고
뒤늦게 다른 함수에서 new해서 만들어진 객체를 연결하는 것이죠.
1
우선 유의 깊게 살펴봐야 되는 부분이,
class란 일종의 설계도에 해당합니다.
가령 class Room에 data, Next, Prev란 멤버 변수들이 있는데
이는 Room이라는 객체를 만들면,
같이 메모리에 포함되어 들어가는 변수라고 보면 됩니다.
예를 들어 스타크래프트 마린을 생성하면, hp=40이고 공격력=6이고 이런 수치들이 있겠죠?
반면 함수 내부 코드에서 변수를 만들고 Room<T> newRoom = new Room<T>();
과 같은 형태로 만들 때는, 완전 얘기가 달라집니다.
이는 class 바로 안에 들어간게 아니라,
함수 내부에서 선언된 변수이기 때문이죠.
함수는 일종의 동작 (코드 로직)이라 생각하면 편한데,
그 과정에서 잠시 사용할 변수들을 만들 수 있으며
그렇게 때문에 함수 내부에서 선언된 변수들은
class 직속 변수들처럼 class 설계도에는 포함되지 않습니다.
위에서 newRoom은 함수() 내부에서만 사용할 수 있는 임시 변수라고 생각하시면 됩니다.
그래서 결과적으로 해당 코드가 실행되면, 메모리에 새로운 Room 객체가 생성되고,
이를 함수 내부에서 newRoom이라는 이름으로 접근할 수 있는 상태가 되는 것입니다.
마지막으로 시리즈가 별도의 선수지식은 가정하진 않지만
그렇다고 아예 0부터 시작하는 초보 용도로 만들어진 것은 아니라,
코딩 기초가 없으면 따라가기 매우 벅찬게 맞습니다.
다른 C# 기본서를 하나 같이 보시는 것을 추천 드립니다.
0
네, 감사합니다! 함수내에서 Class의 객체를 만들면 함수 내에서만 임시적으로 사용한다는거군요. 말씀해주신 부분은 이해를 하였는데요.
그런데, 1~4번에서는 클래스형 인스턴스를 선언하면서 생성자 호출없이 어떻게 만들수 있는지... 특히 3, 4번의 경우는 생성자 호출(→힙에 공간할당→인스턴스 생성)없이 Null이라는 값을 넣었는데요. 이런 부분들이 문법적으로 쉽지는 않은데, 일단은 좀 더 공부해보도록 하겠습니다. 감사합니다!
게임개발에서 주로 어느부분에 알고리즘들이 쓰이는지 궁금합니다
0
172
2
글꼴 바꿔도 자간이 좁아 찌그러져보이시는 분들
0
88
1
NullReferenceException 예외) 같은 실수하시는분 계실까봐 남겨요
0
66
1
parent를 Pos타입으로 만든 이유
0
74
1
콘솔창에 격자가 안나옴 미로 생성 X
0
133
1
격자 생성 안됨 무한루프
0
114
1
BFS 질문
0
143
2
격자 무한 출력
0
167
2
A* 의 PriorityQueue 관련 질문입니다
0
155
2
vscode에서 원그리기
0
180
1
환결설정 강의 원 그리기
0
122
1
15-17분
0
87
1
3:16초에 근데 이렇게 해가지고 부분에 "{}"를 만들어서 자식 node들을 생성하던데 왜 중괄호로 감싸게 만드는 건가요?
0
141
2
동적 배열 관련 질문입니다!
0
209
1
Big-o 표기법에서 시간 복잡도
0
167
1
7:40에서 언급하신 색상이 날아가는 문제 이해를 못하겠습니다
0
151
1
트리구현연습 강의 질문있어요
0
143
1
창은 뜨는데 맵이 나타나지 않아요.
0
175
1
Ctrl F5 하면 나오는 창은 어디서 설정할까요??
0
271
1
void CalcPathFromParent(Pos[,] parent)에 대해서
0
202
2
NullReferenceException예외가 발생했을때 어떻게 해야하나요?
0
229
1
[해결] 환경설정 강의에서 원이 이상하게 그려지는 문제
3
311
2
오른손 법칙에서 플레이어 점이 안 움직입니다
0
245
2
맵 만들기 오류
0
179
1

