为什么输出foo3
等于3
? 我建议,当bar(foo1)
被调用时,函数会在堆栈上bar
创建一个副本foo1
,所以它的值等于 0,当这个值被返回时,复制构造函数foo3
再次增加这个值,所以它应该是 2?
提前致谢。
这是我的代码:
#include <iostream>
struct Foo {
Foo()
: x(0)
{
}
Foo(const Foo& foo)
: x(foo.x + 1)
{
}
int x;
};
Foo bar(Foo foo)
{
foo.x++;
return foo;
}
int main()
{
Foo foo1;
Foo foo2 = foo1;
std::cout << "A:" << foo1.x << std::endl;
std::cout << "B:" << foo2.x << std::endl;
Foo foo3 = bar(foo1);
std::cout << "C:" << foo3.x << std::endl;
}
输出:
A:0
B:1
C:3