2014-11-03 66 views
0

我應該使用參數作爲輸出功能嗎?如果是這樣,何時? 我見過一些WinAPI函數這樣做,我不明白推理是什麼。何時使用變量/參考參數作爲輸出?

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

爲什麼下面的代碼看起來會使用相同的參考? (假設函數只是返回的結果)

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

回答

1

有時候,這是因爲有關的值返回較大的物體的效率(過時)的關注,但在這種情況下,我想原因是允許的返回值用作表示呼叫是否成功的狀態。

+0

所以這是由於效率?我有一個函數返回長度超過200萬的數組(純圖像數據)。將使用參考而不是返回值是有益的嗎? – John 2014-11-03 05:10:14

+0

@John:在某些情況下,將一個對象傳遞給函數可以讓您重用存儲,這可以減少分配和取消分配時間。說到性能,最好儘量測量一下。有幾條硬性規定。 – 2014-11-03 05:15:36

1

,如果你想從功能,以便返回一個錯誤來驗證輸出它可以是非常有用的:

std::string input; 

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

// input is valid here 
+0

這幾乎可以肯定是Win32函數的解釋。他們遵循一個慣例,其中返回值表示成功或失敗(極少數例外) – 2014-11-03 05:18:32