由于此系列是本人一个字一个字码出来的,包括示例和实验截图。本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正。 如有好的建议,欢迎反馈。码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作。如想转载,请把我的转载信息附在文章后面,并声明我的个人信息和本人博客地址即可,但必须事先通知我。
你如果是从中间插过来看的,请仔细阅读(一)羽夏看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语言
这个系列到这就结束了。如果有什么好的建议或者文章如有什么不足或者错误,欢迎批评指正。如果觉得不错,给个支持,感谢。