강의

멘토링

커뮤니티

Inflearn コミュニティ Q&A

min2019112544 のプロフィール画像
min2019112544

投稿した質問数

[C#とユニティで作るMMORPGゲーム開発シリーズ] Part1: C#基礎プログラミング入門

コピー(値)と参照

knight2 hp값이 어떤식으로 할당되나요

作成

·

309

0

만약에 Kngiht knight2 = new Knight();를 생성하고

knight2.hp=0 을 안적고 그대로 

knight2.hp 값을 출력하면

질문1

왜 65번째줄 knight.hp=100값을가져오는지 이해가 안됩니다 

질문2

knight.hp = 100을한다고 해서 class Knight의 hp변수가 public int hp=100으로 바뀌는건 아니지 않나요?

질문3

Kngiht knight2 = new Knight();경우말고

Knight knight2 = DeepCopy();일때 질문1의 경우와 같이 knight.hp=100 값을 가져오는 과정이 같은건가요?

힙에 new로 생성한 Knight가 두개가 생성되고 

kngiht와 knight2는 각각 다른 힙영역을 참조하고 있다고 생각했는데 혼란스러운 상황입니다

C#

回答 2

0

글을 읽다가 궁금해서 남깁니다.

1번질문에서는 원래 knight2.hp는 0이나와야 하지않나요?

new Knight();를 했을때 초기값으로 hp가 100이 되려면

class knight를 생성할때 public int hp =100;을 해줘야 1번답변 knight2.hp =100이 되지않나요?

0

Rookiss님의 프로필 이미지
Rookiss
インストラクター

힙에 new로 생성한 Knight가 두개가 생성되고
kngiht와 knight2는 각각 다른 힙영역을 참조하고 있다고 생각했는데 혼란스러운 상황입니다

네 처음에 이해하신게 맞는 상황입니다.

질문1 왜 65번째줄 knight.hp=100값을가져오는지 이해가 안됩니다 

knight.hp = 100 값을 가져온다는게 어떤 의미일까요?
해당 부분은 knight 객체의 hp를 100으로 설정하는 것이지,
무엇인가를 '가져오는' 개념이 아닙니다.

질문2 knight.hp = 100을한다고 해서 class Knight의 hp변수가 public int hp=100으로 바뀌는건 아니지 않나요?

네 아닙니다. 생성된 knight라는 객체의 hp를 100으로 세팅하는 것이죠.

질문3
Kngiht knight2 = new Knight();경우말고
Knight knight2 = DeepCopy();일때 질문1의 경우와 같이 knight.hp=100 값을 가져오는 과정이 같은건가요?

질문이 잘 이해가 안 갑니다.
깊은 복사를 했다면 기본적으로 별도의 객체이기 때문에 knight.hp = 100로 1번 객체의 값을 설정하더라도, 2번 객체에는 영향을 주지 않습니다.

min2019112544님의 프로필 이미지
min2019112544
質問者

제가 깊은 복사 개념을 잘못 이해하고 있었어요

ㅠㅠ 답변해주셔서 감사합니다!

min2019112544 のプロフィール画像
min2019112544

投稿した質問数

質問する