해결된 질문
작성
·
338
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과 같이 데이터를 묶어서 리턴하는 방법도 있긴 합니다.
답변 감사합니다