在这段代码中:
#include <iostream>
using std::cout;
class Foo {
public:
Foo(): egg(0) {}
Foo(const Foo& other): egg(1) {}
int egg;
};
Foo bar() {
Foo baz;
baz.egg = 3;
return baz;
}
int main(void) {
Foo spam(bar());
cout << spam.egg;
return 0;
}
输出是3,而我期望它是1。
这意味着复制构造函数不会在该行中调用Foo spam(bar())。
我想这是因为该bar函数不返回引用。
你能解释一下初始化时到底发生了spam什么吗?
如果这是一个愚蠢的问题,我提前道歉。
谢谢!