1
我嘗試使用具有一個參數的模板構造函數。我嘗試了2例const參數和非const。模板構造函數一個參數爲常量而不是常量
class Foo1
{
public:
Foo1() {}
template <typename T>
Foo1(const T& f)
{
cout<<"Foo1"<<endl;
}
};
class Foo2
{
public:
Foo2() {}
template <typename T>
Foo2(T& f)
{
cout<<"Foo2"<<endl;
}
};
int main()
{
Foo1 f1;
Foo1 f11(f1);
Foo2 f2;
Foo2 f21(f2);
}
輸出是:對於Foo1而不是foo2的產生 foo2的
所以默認的拷貝構造函數。
當我改變主要功能:
int main()
{
const Foo1 f1;
Foo1 f11(f1);
const Foo2 f2;
Foo2 f21(f2);
}
輸出是空的:
因此兩個拷貝構造被geerated。爲什麼是這種行爲?