您的位置:首页 > 编程语言 > C语言/C++

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

2021-09-08 08:04 836 查看

写在前面

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

你如果是从中间插过来看的,请仔细阅读**(一)羽夏看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语言
这个系列到这就结束了。如果有什么好的建议或者文章如有什么不足或者错误,欢迎批评指正。如果觉得不错,给个支持,感谢。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: