Template
模板存在的价值就是将重复的代码进行统一,让编译器为我们写代码
以一个简单的例子作为示范
#include <iostream>
#include <string>
template<typename T>
void Pritn(T val){
std::cout << val << std::endl;
}
int main(){
Pritn<std::string>("你好");
Pritn<int>(12);
Pritn<double>(12.12);
}
输出一下

我们仅是使用了一个函数就同时适配了三种不同类型的输出打印
实际调用的代码会在编译器的编译期间动态的生成,Clang编译器会报错,但是MSVC和gcc编译器就不会,这个编译器有关
不仅仅是函数,类也可以使用模板进行创建
#include <iostream>
#include <string>
template<typename T, int N>
class Array{
private:
T arr[N];
public:
int getSize(){
return N;
}
};
int main(){
Array<int, 100> arr;
std::cout << arr.getSize() << std::endl;
}

注意了,定义数组的时候,其大小需要在编译期间就能确认,不然回报的,所以,从侧面验证了,真正被调用的函数是在编译期间被动态生成的

浙公网安备 33010602011771号