函数返回值的正式含义是什么?

时间:2014-11-10 04:55:12

标签: c++ function

标准表示当函数返回值时,移动构造函数适用。它不太清楚,因为我认为当函数返回一个值时,它会创建一个在函数执行时构造的临时对象。当然,可以按照复制过程的顺序省略移动构造函数。但是我想考虑一下它没有的情况:

#include <iostream>

struct X
{
    int a = 42;
    X();
    X(const X&&, int t = 24);
};

X::X(){ }

X::X(const X&&, int g)
{
    std::cout << g << std::endl;
}

X foo()
{
    return X();
}

int main()
{
    foo(); //move-constructor called
}

如果我们有一个功能,请说

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

当函数返回值时,内存中实际发生了什么?第一个和第二个例子之间是否存在显着差异?

0 个答案:

没有答案