• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

ref, out 강의에서 질문

21.02.26 14:31 작성 조회수 288

0

Rookiss님 안녕하세요?

c++ 강의를 듣고 다음을 기다릴 수 없어 c#까지 넘어오게 되었습니다.

항상 좋은 강의 기대하고 있습니다.

c# ref 와 out 강의에서 궁금한점이 있습니다.

메서드에서 return을 하나밖에 해줄 수 없는 점을 극복하기 위해 out 키워드가 있다고 하셨습니다

질문 1.

c++에서 

#include <iostream>

using namespace std;

void add(int& a, int& b)

{

a++;

b++;

}

int main()

{

int a = 1;

int b = 2;

add(a, b);

cout << a << endl;

cout << b << endl;

return 0;

}

위와 같은 코드로 레퍼런스 &를 사용하면 return이 마치 2개인 것 같은 효과를 낼 수 있습니다. 하지만 c++ 수업에서는 return을 여러개 한다는 것을 강조? 말씀하시지 않았는데 왜 그런지 궁금합니다. C#은 c++과 다른 목적으로 만들어진 언어이기 때문에 여러개의 return 값은 갖는 것이 중요한 것인가요???

질문 2. 

        static void Divide2(int a, int b, ref int result1, ref int result2)

        {

            result1 = a / b;

            result2 = a % b; 

        }

            int result1 = 0;

            int result2 = 0;

            _6_ref와out.Divide2(10, 3, ref result1, ref result2);

            Console.WriteLine(result1);

            Console.WriteLine(result2);

위와 같이 ref을 이용해서도 마치 return이 여러개인 것처럼 작동할 수 있는데 out이란 키워드를 따로 만든 이유가 있나요?

물론 out을 사용할 때는 result1과 result2의 초기화가 필요없었지만 ref를 사용하면 초기화가 필수적이었습니다.

이런 차이 때문인건가요?

         

답변 1

답변을 작성해보세요.

1

하지만 c++ 수업에서는 return을 여러개 한다는 것을 강조?
말씀하시지 않았는데 왜 그런지 궁금합니다.
C#은 c++과 다른 목적으로 만들어진 언어이기 때문에
여러개의 return 값은 갖는 것이 중요한 것인가요???

-> 강의를 만들 때 아주 심도있게 대본을 짜고 만드는게 아니라
그냥 그때 그때 생각나는 것을 얘기하기 때문에
조금씩 차이가 있을 수 있습니다 ㅎㅎ
C++도 마찬가지로 단일 return으로 부족할 때
reference나 pointer를 이용해서 결과를 함수로 외부 전달하는 것은 동일합니다.
물론 정말 원한다면 tuple과 같이 데이터를 묶어서 리턴하는 방법도 있긴 합니다.

답변 감사합니다