AI智能
改变未来

(七)羽夏看C语言——模板(C++)


写在前面

  此系列是本人一个字一个字码出来的,包括示例和实验截图。本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正。 如有好的建议,欢迎反馈。码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作。如想转载,请把我的转载信息附在文章后面,并声明我的个人信息和本人博客地址即可,但必须事先通知我

你如果是从中间插过来看的,请仔细阅读**(一)羽夏看C语言——简述** ,方便学习本教程。

模板

模板函数

  为了更快捷的写重复性代码,所谓的重复性代码,就是里面只有很少的东西不一样,可以说是一个套路,但大量的类似这样的代码会给维护带来巨大的麻烦。为了更好的写“重复性”代码,

C++

提供了模板,来帮助我们写重复性代码。模板在汇编层面帮了我们做了什么,我们用下面的代码进行实验:

template <typename T>bool Max(T a, T b){return a > b ? a : b;}int main(){int i = 39;int j = 20;Max(i, j);double f1 = 13.5;double f2 = 20.7;Max(f1, f2);char s1[] = "Hello";char s2[] = "World";Max(s1, s2);return 0;}

  下面是反汇编结果:

  从汇编来看,调用模板的时候,每一个类型都会生成一个“函数”,不过这个不是我们自己写的。感兴趣在每个模板函数

call

跟进去看看,你可以发现每一个都是新的“函数”。

模板类

  如果是模板类呢,我们用以下代码进行实验:

template <class T>class MyClass{public:MyClass(T param){test = param;}private:T test;};int main(){MyClass<int> clsint(2);MyClass<float> clsfloat(5.0);return 0;}

  如下是反汇编:

  从汇编来看,和模板函数无异,感兴趣的也可以跟进去看看,本人就不再继续了。

结语

  

羽夏看C语言

这个系列到这就结束了。如果有什么好的建议或者文章如有什么不足或者错误,欢迎批评指正。如果觉得不错,给个支持,感谢。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » (七)羽夏看C语言——模板(C++)