2012-02-06 3 views
7

이 질문이 주제가되기를 바랍니다.뭔가를 out 매개 변수로 반환하는 올바른 용어는 무엇입니까?

나는 다음과 같은 기능에 코드 리뷰를하고 발견 :이 기능은 출력 매개 변수에 의해 xxx 일부 클래스의 yyy의 값을 검색하는 데 사용됩니다

bool SomeFunc(std::string& o_xxx, char& o_yyy); 

.

(나중에 자동 문서에 사용되는) 주석은 말 : 참조로

...이 함수가 반환 [XXX] 및 [YYY] ...

분명히을 이 함수는 성공 또는 실패를 나타내는 부울 값을 반환합니다. 그러므로 위의 문장을 다시 말해야합니다. 그러나 어떻게? out을 매개 변수로 사용하여 반환하거나, 참조로 전달 된 인수를 채우는 올바른 용어는 무엇입니까?

질문은 C++과 관련이 없으므로 언어에 구속받지 않습니다. 그러나 예제는 C++이기 때문에 C++로 태그도 붙였습니다. 간단하게 말하면

+1

내가 보통 함수가 성공 또는 실패를 나타내는 값을 반환 "의 효과에 뭔가를 말하는 성공의 경우'o_xxx'가있을 것이다. [xxx]와'o_yyy' 값은 [yyy] 값을 가지며, 실패 할 경우 인수는 변경되지 않습니다. " –

+1

반환 할 매개 변수가 두 개 이상 있으므로 출력 매개 변수가 사용되는 경우가 있습니다. 그것들을 클래스에 결합하면 인스턴스를 반환 할 수 있습니다. 때로는 out 매개 변수가 효율성을 위해 사용됩니다. 마지막으로 왜 데이터를 전달하고 있습니까? Encapsulate : 말해라, 묻지 마라! –

+0

@ R.MartinhoFernandes : "실패한 경우 인수는 변하지 않습니다."- 이것은 매우 예외적 인 보증입니다.그래서 당신이 이것을 말하면, 문자열 할당이 실패 할 수 있기 때문에 * o_yyy에 할당하기 전에 * 함수에'o_xxx'를 할당해야합니다. 또는 스왑을 사용하십시오. –

답변

8

"성공하면, o_xxxo_yyy 값에 SomeFunc 저장 ..."; 에 저장됩니다. 리눅스 맨 페이지 strtoul(3)은 그 함수가 무엇을 의미 하는지를 endptr 인수로 설명합니다.

참조 입력 매개 변수로 종종 "return in"이라는 문구를 자주 들었지만

+0

고마워요! 의미가있다, 나는 그것을 좋아한다! –

1

:

기능 SomeFunc() 매개 변수 xxx(std::string)yyy(char) 을 수정하고 성공 또는 실패 (bool)를 반환 할 수 있습니다.

+0

이것은 (.NET 용어로)'ref' 매개 변수가 아닙니다. 그것은 'out' 매개 변수입니다 –

1

MSDN 방식을 고려하십시오. Example.

반환 값은 자체 섹션에서 설명합니다.
출력 매개 변수가있는 조작은 자체 섹션에서 설명하며 반환 값 섹션에서 선택적으로 반복 할 수 있습니다. 당신은 doxygen이를 사용하는 경우

1

, 다음이 할 것 :

/** 
*- Description : This function ... 
* 
* @param[out] xxx ... 
* @param[out] yyy ... 
* 
* @return true for ..., false otherwise 
* 
***********************************************************************/ 
+2

'@param [out]''@param [in]' –