강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

김원태님의 프로필 이미지
김원태

작성한 질문수

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

복사와 참조

작성

·

138

0

강사님 안녕하세요.

c++에서는 매개변수를 참조(포인터)냐 지역으로 어떻게 처리하냐에 따라서 출력결과 값이 달라지는데 

c#에서는 클래스를 동적할당 하기만 하면 매개변수로 들어갈시 컴파일러가 알아서

매개변수를 참조하는 용도로 변경하나요?

//c++코드 

class Knight

{

public:

int hp;

};

void Kill_knight1(Knight knight)

{

knight.hp = 0;

}

void Kill_knight2(Knight& knight)

{

knight.hp = 0;

}

void Kill_knight3(Knight* knight)

{

knight->hp = 0;

}

int main() {

Knight knight;

knight.hp = 100;

Kill_knight1(knight);

cout << "지역 처리" << endl;

cout << knight.hp << endl;

Kill_knight2(knight);

cout << "참조 처리" << endl;

cout << knight.hp << endl;

Knight* knight_alloc = new Knight();

Kill_knight3(knight_alloc);

cout<<"포인터처리" <<endl;

cout << knight_alloc->hp << endl;

return 0;

}

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

이전 질문과 동일하므로 링크로 대체합니다.
https://www.inflearn.com/questions/109300

C#에서 class Knight를 사용하면
C++ 기준으로  Knight* 과 같은 포인터(즉 주소값)를
사용하는 것과 동일하게 동작한다!

로 기억해주시면 편합니다.

김원태님의 프로필 이미지
김원태

작성한 질문수

질문하기