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;
}

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

posted @ 2026-04-16 21:49  灵垚克府  阅读(3)  评论(0)    收藏  举报