C++笔记(17)——函数模板、关键字decltype和后置返回类型

本文深入探讨了C++中的模板概念,包括函数模板的使用、模板实例化的方式、模板的优先级顺序以及重载解析原则。文章还介绍了常规模板与具体化模板的区别,并解释了如何在不同类型间使用同一算法。

需要对不同类型使用同一算法时,可以选择使用函数模板。模板不能压缩可执行程序,编译后的代码不包含模板,只包含实例函数。

常规模板:一般使用的模板,其中class也可以用typename;但有时候常规模板不能满足,如交换两个变量值时,数组不能从一个变量赋值给另一个变量(结构可以),当要交换结构中部分变量的值时,这是可以使用具体化模板。

优先级顺序:非模板函数>显示具体化模板>常规模板。

隐式实例化即将常规模板实例化,显示实例化如上图所示形式(比具体化模板少了<>),显示实例化可对数据类型进行强制转换。

重载解析:对函数重载、函数模板和函数模板重载,需要选择一个最匹配的函数。当有两个函数都完全匹配时,常规函数优于模板;进一步,指向非const数据的指针和引用(仅限指针和引用,因为常规实参使用的是副本)有限与非const指针和引用参数匹配。

多个参数时,一个函数要比其他所有函数都适合,其所有参数的匹配都不比其他函数差,同时要至少有一个参数匹配程度高,该函数才能更匹配。

 

 

 

 

声明:C++笔记系列均是摘自《C++ Primer Plus》(中文版第6版),图片也拍自该书。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值