• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

제대로 이해한것인지 궁금합니다.

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를 써서 메모리 할당을 했는데 해제는 안하나요?

답변 3

·

답변을 작성해보세요.

1

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를 건내주면,
실제로는 계속 주소값을 넘기면서 원본을 건드리게 됩니다.

빠밤님의 프로필

빠밤

질문자

2022.04.28

아 포인터표시를 함축하는군요

빠른 답변 감사드립니다.

빠밤님의 프로필

빠밤

질문자

2022.04.28

new는 나중에 설명이 나오나요?

C++에서 new는 동적 할당의 의미이지만
C#에서는 꼭 그렇지는 않고 오히려 더 단순합니다.
class를 new하면 C++처럼 동적 할당이지만,
struct를 new하면 그냥 스택에서 초기화를 합니다.

빠밤님의 프로필

빠밤

질문자

2022.04.28

빠른 답변 감사합니다.

앞으로 모르겠으면 바로바로 적어봐야겠군요 ㅎㅎ

0

Seong Yeop Choi님의 프로필

Seong Yeop Choi

2022.08.21

현재 강의 상에서 knight 와 knight2 사이에KillKnight(knight) 가 있어서 knight.hp=0 인 값을 복사해서 knight2.hp 가 0 이 되는게 맞지요? 

0

Seong Yeop Choi님의 프로필

Seong Yeop Choi

2022.08.19

저도 비슷한 질문이 있어서 댓글 남깁니다.

7:15 에서

knight  와 knight2 가 독립된 객체인것은 이해가 되는데

Knight2.hp = knight.hp;

Knight2.attack = knight.attack;

 를 통해  knight.hp 인 "0" 을 참조하여

knight2.hp 도 "0" 이 됩니다.

이렇게 의도하신것이 맞나요?

 

질문이 잘 이해가 안 갑니다.
int는 '참조'하는 개념이 아니기 때문에, 그대로 복사됩니다.
Knight.hp가 100이었다면 knight2.hp = 100이 되는 셈이죠.