欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

C++学习——模板

发布时间:2024/7/19 c/c++ 69 豆豆
生活随笔 收集整理的这篇文章主要介绍了 C++学习——模板 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

    • 1.C++模板
    • 2.C++模板是什么,底层怎么实现的?

1.C++模板

模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。 模板是创建泛型类或函数的蓝图或公式。 库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。 每个容器都有一个单一的定义, 比如 向量,我们可以定义许多不同类型的向量,比如 vector <int> 或 vector <string>#include <stdio.h> #include<iostream> using namespace std;template <typename T1,typename T2> void print(T1 value1,T2 value2){cout << "value=" << value1+value2 << endl; }template <class T1,int SIZE> class solution { public:void print(T1 value) {cout << "value=" << value << endl;}void set(int i, int value) {if (i >= SIZE) {cout << "error" << endl;}else {array[i] = value;}}void print_array() {for (int i = 0; i < SIZE; i++) {cout << array[i] << " ";}cout << endl;} private:int array[SIZE]; }; int main() {print(23,23.23);print(23.67, 9);solution<double,5> s;s.set(0, 7);s.set(1, 2);s.set(2, 5);s.set(3, 19);s.set(4, 67);s.print_array();return 0; }

2.C++模板是什么,底层怎么实现的?

编译器并不是把函数模板处理成能够处理任意类的函数; 编译器从函数模板通过具体类型产生不同的函数; 编译器会对函数模板进行两次编译: 在声明的地方对模板代码本身进行编译,在调用的地方对参数替换后的代码进行编译。 这是因为函数模板要被实例化后才能成为真正的函数,在使用函数模板的源文件中包含函数模板的头文件,如果该头文件中只有声明,没有定义,那编译器无法实例化该模板,最终导致链接错误。

总结

以上是生活随笔为你收集整理的C++学习——模板的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。