【发布时间】:2016-06-18 18:15:33
【问题描述】:
#include <iostream>
using namespace std;
class Foo
{
public:
Foo()
{
cout << 0;
}
Foo(Foo &f)
{
cout << 1;
}
};
void someFunction(Foo f) {};
int main()
{
Foo f1; //displays 0 (as expected)
Foo f2(f1); //displays 1 (as expected)
someFunction(f1); //displays 1 (why?)
someFunction(f2); //displays 1 (why?)
return 0;
}
我不明白为什么函数“someFunction”调用第二个构造函数。我以为它只会调用第一个构造函数,没有参数,并显示 0。
也许我遗漏了一些明显的东西......
【问题讨论】:
-
someFunction获取其参数的副本。Foo(Foo &f)可以用作复制构造函数。Foo(Foo const &f)会是更好的复制构造函数。
标签: c++ constructor copy-constructor