namespace _nasp1
{
template <typename T>
void myfunc( T& abc){.............}
}
int main()
{
int i =10 ;// i类型为int
const int j = i; //j的类型为cosnt int
const int& k = j; //k的类型为const int&
嗯嗯,我猜的
myfunc(i); //T 为 int abc为int&
myfunc(j) ; //T为 int const abc为 int const&
myfunc(j); //T为 int const abc为 int const&
}
说一下结论: 如果实参是引用类型的,那么引用部分会被忽略,T不会被推导为引用类型
当向引用类型传递const引用的实参时,那么形参会被推导为const引用类型。(原来的const引用)
实参的const属性会被推导为类型T的const属性,我们就不用担心实参会被修改。
namespace _nasp1
{
template <typename T>
void myfunc( const T& abc){.............}
}
int main()
{
int i =10 ;// i类型为int
const int j = i; //j的类型为cosnt int
const int& k = j; //k的类型为const int&
嗯嗯,我猜的
myfunc(i); //T 为 int abc为int const&
myfunc(j) ; //T为 int abc为 int const&
myfunc(j); //T为 int abc为 int const&
}
若实参是引用类型,引用部分会被忽略掉,T不会被推导为引用类型
T中的const没有了,但是abc里面会有const
template<typename T>
void myfunc(T* abc)
{
}
int i =10;
const int* j =&i;
myfuc(& i); //T为int abc为int*
myfunc(j); //T为int const abc为int const
结论:abc中如果没有const ,则实参中的const会被带到形参中去
这个结论对于形参T& abc或者 const T& abc 也适用