2014-11-03 149 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