补充一的多态内容
可参考网址[模板相关的题]:https://www.cnblogs.com/gqtcgq/p/7189588.html
[模板详解]:https://blog.csdn.net/weixin_44030580/article/details/105532282
[万能引用]:http://t.zoukankan.com/ishen-p-13771991.html
[引用折叠]:https://zhuanlan.zhihu.com/p/50816420
[模板通俗讲解]:https://zhuanlan.zhihu.com/p/50908292
相关语法
C++中类模板的声明格式为template<模板形参表声明><类声明>
0.模板类和类模板相同吗?
不同。
模板类是总的,类模板是模板类的成员之一。
模板类是总的机制,可以理解成模板库。
1. 模板的底层实现原理
参考网址:编译器从头到尾的工作原理概述[]:http://www.360doc.com/content/21/0217/14/32196507_962421655.shtml
函数模板的工作原理:[]:https://www.cnblogs.com/wuhongbin/p/14048321.html
函数模板靠的是编译器。分两段编译。
函数模板使用后,编译器并不会一开始就生成所有处理任何类型的函数,而是通过实际的函数调用来生成。
比如调用函数时,需要处理int型数据,就生成处理int型数据的函数,而没有用double型数据,就不会生成处理double型数据的函数。
2. 什么是非类型模板参数
可以当实参使用的传入参数。 哪些不属于非类型模板参数 : 浮点数、类对象、字符串
3. 模板函数的参数是在什么时候确定?
是在编译期决定的。
4. 什么是分离编译
工程中的多个源文件自己生成目标文件,最后链接成为一个可执行文件
5. 模板特化是什么?
在调用函数模板时指定传入的参数将是什么类型。
6.模板特化的作用是什么?
模板本来是一组通用逻辑的实现,但是可能存在特定的参数类型下,通用的逻辑实现不能满足要求,这时就需要针对这些特殊的类型,而实现一个特例模板—即模板特化。
6. 模板部分特化是什么?(偏特化)
当函数模板有多个模板参数时,可以指定特定参数是什么类型。
严格来说,函数模板并不支持偏特化,但由于可以对函数进行重载,所以可以达到类似于类模板偏特化的效果。
类模板中当有多个模板形参时,我们可以只特化一部分形参而不是全部。
7. 什么是引用折叠?
引用折叠是多个引用组合,左-左 ; 左- 右 右-右;... 规则:有左值引用就是左值引用。
8. 什么是万能引用?
用template实现既能接收左值引用也能接收右值引用;万能引用内部里应用引用折叠。
9. 如何实现完美转发?
在万能引用的基础上利用forward【不然的话都是当作左值来使用】 (内部原理是static_cast类型强制转换)实现接受不同参数,然后转发到不同函数重载去。
10. 函数模板可以进行函数重载吗?
可以,工作模式为:可以是名字相同,形参数目不相同,类型不相同,或者是非函数模板的重载的可以。
本文来自博客园,作者:快乐过了阈值,转载请注明原文链接:https://www.cnblogs.com/black-worrior-2000/p/16574310.html
墨愁前路无知己,天下谁人不识君。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!