C++模板
C++模板
泛型编程:不再针对某种类型,而是可以广泛的使用
模板(Template)指C++程序设计设计语言中采用类型作为参数的程序设计,支持通用程序设计。C++ 的标准库提供许多有用的函数大多结合了模板的观念,如STL以及IO Stream。模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型
通常有两种形式:函数模板和类模板;
函数模板 针对仅参数类型不同的函数;
类模板 针对仅数据成员和成员函数类型不同的类。
使用模板的目的就是能够让程序员编写与类型无关的代码。
模板实际上就是根据传过来的地址 再生成相应的类型的新的函数 再去调用这个函数
并不是调用模板函数
函数模板的类型一般是由编译器根据实参传递给形参推演出来的,如果不能自动推演,就要显示实例化,知道模板参数。
模板参数也是可以给缺省类型的。
模板参数:很多用法和函数参数是很像的,传递的是类型,函数参数传递的是对象值
函数模板的声明与定义
类模板的声明与定义
模板不支持声明和定义分别放到两个文件中,会出现链接错误,一般都要放到一个文件中。
解决方案1:在template.cpp中正对要使用的模板类型显示实例化
解决方案2:不要分类两个文件(推荐)
为什么模板不支持声明与定义分离?
因为编译器找不到目标的实例化,不会生成具体的代码
到了链接阶段,没找到具体的代码,因为没有生成,所以会导致链接错误。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律