• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

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

22.07.10 23:18 작성 조회수 174

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는 각각 다른 힙영역을 참조하고 있다고 생각했는데 혼란스러운 상황입니다

답변 2

·

답변을 작성해보세요.

0

김진호님의 프로필

김진호

2023.03.07

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

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

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

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

0

힙에 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번 객체에는 영향을 주지 않습니다.

강민성님의 프로필

강민성

질문자

2022.07.11

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

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