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