C++泛型编程

1.模板介绍

泛型编程:指的是直接应用“使用模板编写好的函数模板或类模板库程序”进行编程。在具体使用时,程序员只需向使用的库函数或类模板提供类型或值即可。模板是泛型编程的基础。比如使用标准模板库中的容器、迭代器进行编程,就是泛型编程。

模板函数:“模板函数”强调的是函数,函数使用模板实现。

函数模板,“函数模板”强调的是模板,模板实现的是函数的功能。

2.类模板和函数模板的通式

①函数模板:template<class或typename模板形参名,...> 返回类型 函数名(形参列表){...}。

如:template<class T>void f(T a){T i;}

②类模板:template<class或typename模板形参名,...>class 类名{...}。类模板必须使用显示模板实参创建对象。

如:A<int,double> ma;

3.理解模板

①模板以关键字template开始,并在其后加上尖括号<>。

②模板形参:在声明或定义模板时尖括号中的就是模板形参,其形式为“class或typename模板形参名”。比如template<class T>void f();其中T就是模板形参,多个模板形参使用逗号隔开。注意:模板形参表不能为空。

③模板实参:与模板形参相对应,用来传递给模板形参以确定其值,这里的值有可能是某种类型,也有可能是某个具体的值,而非传统意义上的具体的数值。若模板形参代表的是某种类型,则模板实参就是具体的一种类型,该类型可以是自定义的类型(类类型)、内置类型(int),甚至可以是类模板类型。

4.修饰模板关键字的位置

①对模板进行修饰的关键字(如friend,inline,const,extern,virtual,static等)应位于template<模板形参表>之后。比如template<class T> static void f();声明f为静态函数;

②模板默认为外部链接。函数模板可以为内部链接,即可以使用static修饰。比如template<class T>static void f(){};

③内联函数模板需要使用关键字inline明确指定(除非其本身就是内联的,如位于类的内部)。

猜你喜欢

转载自blog.csdn.net/weixin_41882459/article/details/114012552