传值类型模板参数
templatevoid fn(T param)
param是通过传值的方式传递的,也就是说t这个形参是通过函数fn被调用时的实参拷贝赋值的,param是一个全新的对象,因此实参的常量性(const),引用性都不会被传递到形参param上:
#include#include using namespace std; template void fn(T param) { cout<<" "< ::value; cout<<" "< ::value; cout<<" "< ::value< 对于实参指针的const性,也不例外,不过需要指出的是对于指针,可以声明指针指向对象的常量性及指针本身的常量性:
const char * const p = "hello";
第一个const即 * 左边的const是用来修饰指针所指向的类型,也就是说指针指向的内容是const
第二个const即 * 右边的const是用来修饰指针本身的,也就是说指针本身是const
当param是传值的是指针类型时,修饰指针所指向类型的const会被传递给param,但是修饰指针本身的const不会被传递:
#include#include using namespace std; template void fn(T param) { cout< ::value; cout<<" "< ::value; cout<<" "< ::value<



