#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)'會是一個更好的複製構造函數。 –