杨泽彬的神秘商店

博客园 首页 新随笔 联系 订阅 管理
  71 随笔 :: 0 文章 :: 0 评论 :: 7688 阅读

补充一的多态内容

可参考网址[模板相关的题]: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. 函数模板可以进行函数重载吗?

可以,工作模式为:可以是名字相同,形参数目不相同,类型不相同,或者是非函数模板的重载的可以。

posted on   快乐过了阈值  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示