极客班STL与泛型编程(第一周笔记)

C++模板

什么是泛型编程和模板?

泛型是一种编程思想,而模板是泛型编程在C++上的实现方法

以往的函数都会是有固定的数据类型,调用参数也必须是同样或者是兼容的类型。

而模板可以实现函数和类,在设计时不用指定固定的型别(types)

types的解释,我们应该理解为“型别”更为贴切。

模板的声明格式:

在模板语法中,关键字typename和class都是一样的(只是在模板语法中是通用的)

建议用typename,因为用class定义的话容易引起误解,让人产生错觉,以为这个型别只能是类

模板分类

C++主要有两种类型的模板:类模板和函数模板。

Class template的参数是约束在整个类(对象)里面。

Function template的泛型约束是在参数上面。

模板实例化:

模板的声明没有完全定义,就是说在定义的时候是不完整的,只是实现了语法框架。

实例化(调用时)从模板

Template是泛化的,不具体的,当要调用它的时候,要告诉编译器它具体是什么型别的,或者让编译器能够推导出来。

函数模板:它是语法相同在而拥有不同型别的,

但是不可以使用不相同型别的参数来调用Max,因为编译器在编译时就要知道Max函数需要传递的型别,但如果是两个不相同型别编译器就无法确定是哪一种,这样编译器会报错。

强制转换参数型别 也可以用

12.MyClass obj;同时满足了MyClass和MyClass

你可能感兴趣的:(极客班STL与泛型编程(第一周笔记))