C/C++教程

C++模板

本文主要是介绍C++模板,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

C++模板

泛型编程:不再针对某种类型,而是可以广泛的使用

 

模板(Template)指C++程序设计设计语言中采用类型作为参数的程序设计,支持通用程序设计。C++ 的标准库提供许多有用的函数大多结合了模板的观念,如STL以及IO Stream。模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型

通常有两种形式:函数模板和类模板;

函数模板 针对仅参数类型不同的函数;
类模板 针对仅数据成员和成员函数类型不同的类。

使用模板的目的就是能够让程序员编写与类型无关的代码。

 

 

 

 

 

 

 

 

模板实际上就是根据传过来的地址 再生成相应的类型的新的函数 再去调用这个函数

并不是调用模板函数

 

 

 

函数模板的类型一般是由编译器根据实参传递给形参推演出来的,如果不能自动推演,就要显示实例化,知道模板参数。

 

 

 

 模板参数也是可以给缺省类型的。

 

模板参数:很多用法和函数参数是很像的,传递的是类型,函数参数传递的是对象值

 

函数模板的声明与定义

 

 

类模板的声明与定义

 

 

模板不支持声明和定义分别放到两个文件中,会出现链接错误,一般都要放到一个文件中。

 

解决方案1:在template.cpp中正对要使用的模板类型显示实例化

解决方案2:不要分类两个文件(推荐)

 

为什么模板不支持声明与定义分离?

因为编译器找不到目标的实例化,不会生成具体的代码 

到了链接阶段,没找到具体的代码,因为没有生成,所以会导致链接错误。

 

这篇关于C++模板的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!