c++ primer 연습문제 질문
글쓴이: tldrd0117 / 작성시간: 목, 2014/11/06 - 12:39오후
문제: string이 10개인 배열에 대한 참조자를 반환하는 함수 선언을 후행 반환, decltype, 타입 별칭을 사용하지 않고 만든다.
문제가 이해가 안가는데
string &(arry_return(string a[10])) { return *a; }
이건지
string (&arry_return(string a[10]))[10] { string v[10]; return v; }
이건지
string (&arry_return(string a[10]))[10] { return a; }
매개변수 받을 때 왜 string a[]는 string *형식으로 받아지는 건지...
문제의 의도는 첫번째 인걸까요 두번째 인걸까요
아니면 다른 방식이 있는건가요..
Forums:
답변
1. 배열은 포인터 없이 바로 반환할 수 없습니다. 반드시 (~배열에 대한 포인터) 형태로 반환해야 합니다.
2. 인자는 신경 쓰실 필요 없는데 조건에 없기 때문입니다.
3. string이 10개인 배열에 대한 참조자를 반환하는 함수 '선언'이므로 정의가 필요없이 위와 같이 만드시면 됩니다.
4. C도 그렇지만, 인자를 배열이나 함수 형태로 선언하면 C++은 이것을 포인터로 인식합니다. The C Programming Language에서 이를 통해 편의성을 얻었다고 적혀있습니다.
근데 후행 반환이랑 decltype은 왜 조건인지 모르겠네요. (사실 뭔지도 모르겠습니다)
저는 이렇게 생각했습니다.
댓글 달기