这里fun就是模板函数 ,每次调用fun函数时 ,就会生成一个fun 函数 ,t就是传的参数 。 所以这里的fun只是模板
会根据传参不同生成不同的fun函数
示例如下
如果模板是T*类型的
这里fun明确要一个指针 ,不能推演整形。这里就形成了部分特指
模板为引用时
这里是推演不了的 ,因为x y地址是个常量 ,不能改变 ,所以t要推演成常性的指针 ,但系统推演不了这种模板。
模板函数的重载
类模板
这里和类函数一样 , 传不同的类型会生成不同的参数
这里是传两个参数 ,一个是类型 ,一个是值 ,这里的N类似于我们的宏定义 ,在底下会直接进行替换。 如果我们传的类型相同而N不同 ,那么也是生成的不同类型的类
这里是为了演示 N的替换。 如果我们这里不调用push函数是不会报错的 。但如果我们调用push函数 ,会产生错误 ,因为N已经被替换了 ,左值不能为常量。
这里要的是一个类型 ,和一个模板类。
比如我们定义 一个模板类
可以直接传进去 。
但这里的模板类不能生成类型 ,如果生成了类型就是一个具体类 而不是模板类。