-3

通过方法分配变量、返回变量或指向变量时,哪个更快?

案例一

函数声明

void foo(int* number)
{
    *number = 5;
}

用法

int main()
{
    int number;
    function(&number);
    cout << "Number: " << number;
}

案例2

函数声明

int foo()
{
    int number = 5;
    return number;
}

用法

int main()
{
    int number;
    number = function();
    cout << "Number: " << number;
}

PS: In case 2, I created a variable and returned it instantly. I know this doesn't make sense, but this is the closest example I can find for the situation I'm dealing with, since I'm initializing an actual object, which requires creating the object first, editing it, then returning it

4

3 回答 3

2

这取决于复制变量的成本。对于原始类型,返回一个值。对于更复杂的类型,请考虑传入引用,或查看 C++11 移动语义。

于 2013-08-23T21:09:00.657 回答
1

使用输出参数(案例 1)的一个好处是它使您能够拥有一个函数“返回”多个值:

void foo (int* x, int* y)
{
    *x = 5;
    *y = 4;
}

但就像每个人在评论中所说的那样,这在 C++ 中并不像 C 那样重要。通常返回更具可读性,并使您的程序逻辑定义明确且易于遵循。在 C++ 中,坚持返回或引用。

于 2013-08-23T21:13:04.990 回答
0

通常,您应该根据自己的需要而不是性能来选择使用哪个。

你有多个输出吗?-> 使用指针

输入将成为输出 -> 也可以使用指针

在这两种情况下,返回变量更加困难。除此之外,在性能方面,只有在变量超级复杂时才使用变量,这样,您只需传入一个指针而不是那个超级复杂的对象。但除此之外,任何性能提升都可以忽略不计。

于 2013-08-23T21:13:51.573 回答