2014-11-03 1 views
0

함수에 매개 변수를 출력으로 사용해야합니까? 그렇다면 언제? 일부 WinAPI 함수가이 작업을 수행하는 것을 보았습니다. 이유가 무엇인지 이해하지 못합니다.변수/참조 매개 변수를 출력으로 사용하는 경우는 언제입니까?

LARGE_INTEGER c; 
    QueryPerformanceCounter(&c); 
    ... 
    QueryPerformanceCounter(&c); 

아래의 코드가 동일한 기능을 수행 할 때 참조가 사용되는 이유는 무엇입니까?

LARGE_INTEGER c = QueryPerformanceCounter(); 
    ... 
    c = QueryPerformanceCounter(); 

답변

1

때때로이 때문에 값이 큰 객체를 반환의 효율성에 대한 (오래된) 문제이다 (가정 함수는 단순히 결과를 반환)하지만,이 경우 나는 이유는 반환 값을 허용하는 생각 호출 성공 여부를 나타내는 상태로 사용됩니다.

+0

그래서 효율성에 의한의를? 2 백만 개가 넘는 배열 (순수한 이미지 데이터)을 반환하는 함수가 있습니다. 반환 값보다는 참조를 사용하면 유용할까요? – John

+0

@ 존 : 경우에 따라 객체를 함수에 전달하면 저장소를 다시 사용할 수있어 할당 및 할당 해제 시간을 줄일 수 있습니다. 성능면에서 측정하는 것이 가장 좋습니다. 굳건한 규칙은 거의 없습니다. –

1

당신은 출력 확인하기 위해 함수에서 오류를 반환 할 경우 매우 유용 할 수 있습니다 :

std::string input; 

if(!read_device(input)) 
{ 
    log("ERROR: reading device:"); 
    return false; 
} 

// input is valid here 
+0

이것은 거의 Win32 함수에 대한 설명입니다. 그들은 반환 값이 성공 또는 실패를 나타내는 규칙을 따른다 (예외는 거의 없다) –

관련 문제