auto自动推导数据类型



函数模板
定义和调用




函数模板具体化
函数模板通用版本之外的一个特殊版本




函数模板 具体化函数 ,它们的声明和定义都可以分开写。
声明

定义

函数模板写变量

模板参数缺省

类成员函数作为函数模板


类构造函数是函数模板

函数模板重载

函数模板分文件编写





高级应用


![]()
decltype的结果要么和表达式的类型相同,要么就是表达式的类型的引用。




函数模板注意事项

![]()
一个类的析构函数只有一个,没有参数,不需要模板。
类模板
基本概念

类模板在创建对象的时候指定数据类型
定义和调用



继承类模板




类模板特化




嵌套
类模板的成员模板

下面的是AA的成员


类外定义

类模板作为函数参数



可变模板
折叠参数类型
_Ty ... args 类型 _Ty , 参数包(变量名)args

折叠参数展开方式
c++开发中广泛使用声明和实现分开的开发形式,其编译过程是分离式编译,就是说各个cpp文件完全分开编译,然后生成各自的obj目标文件,最后通过连接器link生成一个可执行的exe文件,调用普通函数时候编译期不需要实例化该函数,只需要将函数符号(或者说函数名加一些规则)记录下来,等待链接其他cpp编译出来的obj文件的时候去查找函数定义,找不到会报出未定义。而C++标准明确表示,当一个模板不被用到的时侯,它就不该被实例化出来,所以在编译的时候,函数并不会被实例化,就会导致链接错误。
我们调用一个函数模板时候,需要实例化,编译器必须看到模板确切的定义。
参考
C++泛编程(自动推导、函数模板、类模板)_哔哩哔哩_bilibili