-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
제대로 이해한것인지 궁금합니다.
22.04.28 18:56 작성 조회수 199
0
5분대부터 헷갈리고 있습니다.
59번째 줄에 killKnight(knight); 가 남아있어서 그런가? 싶은 생각이 듭니다.
1. 59번째 줄 이후로 knight.hp값이 0이 되있는 상태인데
쓰여진 코드를 보면 knight2.hp는 처음부터 0을 참조하는것이 아닌가 싶어서요
62번째 줄의 knight.hp=0을 쓰신 이유를 모르겠습니다
위 생각과는 상관없이 설명만을 토대로 정리할 겸 써보자면
2. 5분대에 있는 61번째 쓴 줄이
C++ 에서는 Knight& knight2 = knight 라고 표현될수 있는 건가요?
3. new를 써서 메모리 할당을 했는데 해제는 안하나요?
답변을 작성해보세요.
1
Rookiss
지식공유자2022.04.28
1. 네 knight.hp = 0은 없다고 생각하고 분석해주시기 바랍니다.
2. C++에서 C#으로 넘어올 땐 한가지만 기억하면 편합니다.
C#의 struct는 C++의 struct처럼 복사가 되고,
C#의 class는 C++로 치면 항상 *를 함축하고 있다고 생각하시면 됩니다.
C# : struct Knight -> C++ : Knight 복사
C# : class Knight -> C++ : Knight* or Knight&
struct Knight로 만들고 knight를 다른 변수나 함수 인자로 넘겨주면,
C++ struct와 마찬가지로 그냥 복사가 일어납니다.
class Knight로 만들고 knight를 건내주면,
실제로는 계속 주소값을 넘기면서 원본을 건드리게 됩니다.
Rookiss
지식공유자2022.04.28
C++에서 new는 동적 할당의 의미이지만
C#에서는 꼭 그렇지는 않고 오히려 더 단순합니다.
class를 new하면 C++처럼 동적 할당이지만,
struct를 new하면 그냥 스택에서 초기화를 합니다.
0
Seong Yeop Choi
2022.08.21
현재 강의 상에서 knight 와 knight2 사이에KillKnight(knight) 가 있어서 knight.hp=0 인 값을 복사해서 knight2.hp 가 0 이 되는게 맞지요?
0
Seong Yeop Choi
2022.08.19
저도 비슷한 질문이 있어서 댓글 남깁니다.
7:15 에서
knight 와 knight2 가 독립된 객체인것은 이해가 되는데
Knight2.hp = knight.hp;
Knight2.attack = knight.attack;
를 통해 knight.hp 인 "0" 을 참조하여
knight2.hp 도 "0" 이 됩니다.
이렇게 의도하신것이 맞나요?
Rookiss
지식공유자2022.08.19
질문이 잘 이해가 안 갑니다.
int는 '참조'하는 개념이 아니기 때문에, 그대로 복사됩니다.
Knight.hp가 100이었다면 knight2.hp = 100이 되는 셈이죠.
답변 3