(七)羽夏看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语言这个系列到这就结束了。如果有什么好的建议或者文章如有什么不足或者错误,欢迎批评指正。如果觉得不错,给个支持,感谢。
(七)羽夏看C语言——模板(C++)的更多相关文章
- (六)羽夏看C语言——函数
写在前面 由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...
- (一)羽夏看C语言——简述
"羽夏看C语言"介绍什么 本系列从汇编的角度,比较翔实的介绍C语言.C++和C其实是一样的东西,C++的编译器只是更强大,更能帮助我们写代码,例如模板.没有特殊说明,本系列不会 ...
- (八)羽夏看C语言——C番外篇
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章 ...
- (九)羽夏看C语言——C++番外篇
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章 ...
- (五)羽夏看C语言——结构体与类
写在前面 由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...
- (四)羽夏看C语言——循环与跳转
写在前面 由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...
- (三)羽夏看C语言——进制
写在前面 由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...
- (二)羽夏看C语言——容器
写在前面 由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...
- 羽夏看Win系统内核——简述
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...
随机推荐
- 使用hsdis-amd64.dll打印java的汇编文件
文件放在D:\DeveSOFTWARE\jdk1.8.0_45\jre\bin目录下 hsdis-amd64.dll 下载路径:https://github.com/atzhangsan/file_l ...
- create-react-app 项目安装less
1.安装依赖: npm install less less-loader --save-dev 2.在webpack.config.js里面添加配置:(若webpack.config.js文件没有显示 ...
- Qt+腾讯IM开发笔记(一):腾讯IM介绍、使用和Qt集成腾讯IM-SDK的工程模板Demo
前言 开发一个支持全国的IM聊天,可以有基本的功能,发送文本.图片.文件等等相关内容. 腾讯IM产品 概述 腾讯即时通信IM是腾讯推出的即时聊天程序,当前时间为2020年3月(腾讯IM的优 ...
- 【译】使用 Source Link 提高调试效率
有多少次你在调试器中追踪一个缺陷,通过代码,观察局部变量的值改变,当你碰壁--不是你所期待的值和你不能进入的方法,因为它来自类库或 .NET 框架本身:或者您设置了一个条件断点,等待检查某个值是如何设 ...
- django有什么CMS比较好用?哪个好?
这个网站有目前在电子商务领域流行的django cms的横向对比表格,可以看看 https://djangopackages.org/grids/g/ecommerce/ 从结果上来看,django- ...
- Docker入门第一章
Docker为什么出现? 一款产品:开发到上线 两套环境!应用环境,应用配置! 可能在开发环境你的产品是正常的,但是到了线上环境你的产品可能就会出现各种原因,或许是因为环境的不同,也可能是因为配置的不 ...
- git基本命令-直接上手使用
git基本命令-直接上手使用 此篇为直接是使用git,如果想了解其原理和其他详细信息,请关注我,看其它相关文章 git创建仓库(初始化仓库) 使用当前目录作为仓库 git init // 执行该目录后 ...
- Gnucash的投资记录
投资活动主要涉及3个账户:资产(Asset)下的子账户记录投资金额,收入(Income)下的子账户记录投资收入,支出(Expense)下的子账户记录投资费用支出(例如银行手续费,证券交易费等). 以购 ...
- 寻找写代码感觉(一)之使用 Spring Boot 快速搭建项目
写在前面 现在已经是八月份了,我已经荒废了半年居多,不得不说谈恋爱确实是个麻烦的事,谈好了皆大欢喜,分手了就是萎靡不振,需要很长一段时间才能缓过来. 人还是要有梦想的,至于实现只不过是一个契机,但凡不 ...
- 内存吞金兽(Elasticsearch)的那些事儿 -- 常见问题痛点及解决方案
1.大数据量的查询效率如何保证: 查询的流程:往 ES 里写的数据,实际上都写到磁盘文件里去了,查询的时候,操作系统会将磁盘文件里的数据自动缓存到 Filesystem Cache 里面去 最佳的情况 ...