1
하나의 매개 변수로 템플릿 생성자를 사용하려고합니다. 나는 const 매개 변수와 const가 아닌 두 가지 경우를 시도한다.템플릿 생성자 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);
}
출력은 다음과 같습니다 FOO2
그래서 기본 복사 생성자가 FOO1과하지 FOO2 생성됩니다. 그래서 모두 geerated하는 건설 복사
:
int main()
{
const Foo1 f1;
Foo1 f11(f1);
const Foo2 f2;
Foo2 f21(f2);
}
출력이 비어 :
나는에 주요 기능을 변경할 때. 왜 그 행동입니까?