inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문

복사(값)와 참조

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

356

빠밤

작성한 질문수 2

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

C#

답변 3

1

Rookiss

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

0

빠밤

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

빠른 답변 감사드립니다.

0

빠밤

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

1

Rookiss

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

0

빠밤

빠른 답변 감사합니다.

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

0

Seong Yeop Choi

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

0

Seong Yeop Choi

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

7:15 에서

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

Knight2.hp = knight.hp;

Knight2.attack = knight.attack;

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

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

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

 

0

Rookiss

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

Generic에 대한 질문 있습니다.

0

116

2

2022 버전에 커뮤니티 버전이 없는데 2026 버전으로 해도 무관?

0

229

2

다형성 캐시 문제

0

138

3

.

0

78

1

프로퍼티 강의 질문 있습니다.

0

86

1

이후 커리 질문

0

92

1

static

0

104

2

강의에는 새로운 클래스 파일을 생성하면...

0

86

1

생성자의 이름 선언

0

72

1

9:03 Divide(10 , 3) 부분 질문입니다

0

96

1

깃허브 관련 질문 있습니다.

0

252

1

비쥬얼 스튜디오 업데이트가 된건가요..? 매개변수 오류 관련 질문

0

261

1

C# 시리즈 || C++ 시리즈 자료구조 강의에 대한 질문입니다!

0

313

2

Activator 질문있습니다

0

345

1

이넘 타임 선언 질문

0

361

1

Sort 오름차순, 내림차순

0

334

1

질문 있습니다.

0

256

1

팩토리얼 문제

0

278

1

Sort함수 질문있습니다.

0

274

1

다형성 함수 질문 있습니다.

0

231

1

질문이 있습니다.

0

236

1

섹션2 연습문제 질문입니다.

0

224

1

안녕하세요~서버에 대해 질문이 있습니다.

1

290

1

텍스트 색깔이 제 편집기와 달라서 수강에 어려움이 있습니다ㅜㅜ

0

402

1