C++模板
什么是泛型编程和模板?
泛型是一种编程思想,而模板是泛型编程在C++上的实现方法
以往的函数都会是有固定的数据类型,调用参数也必须是同样或者是兼容的类型。
而模板可以实现函数和类,在设计时不用指定固定的型别(types)
types的解释,我们应该理解为“型别”更为贴切。
模板的声明格式:
在模板语法中,关键字typename和class都是一样的(只是在模板语法中是通用的)
建议用typename,因为用class定义的话容易引起误解,让人产生错觉,以为这个型别只能是类
模板分类
C++主要有两种类型的模板:类模板和函数模板。
Class template的参数是约束在整个类(对象)里面。
Function template的泛型约束是在参数上面。
模板实例化:
模板的声明没有完全定义,就是说在定义的时候是不完整的,只是实现了语法框架。
实例化(调用时)从模板
Template是泛化的,不具体的,当要调用它的时候,要告诉编译器它具体是什么型别的,或者让编译器能够推导出来。
函数模板:它是语法相同在而拥有不同型别的,
但是不可以使用不相同型别的参数来调用Max,因为编译器在编译时就要知道Max函数需要传递的型别,但如果是两个不相同型别编译器就无法确定是哪一种,这样编译器会报错。
强制转换参数型别 也可以用
12.MyClass obj;同时满足了MyClass和MyClass