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

常规模板:一般使用的模板,其中class也可以用typename;但有时候常规模板不能满足,如交换两个变量值时,数组不能从一个变量赋值给另一个变量(结构可以),当要交换结构中部分变量的值时,这是可以使用具体化模板。
优先级顺序:非模板函数>显示具体化模板>常规模板。
隐式实例化即将常规模板实例化,显示实例化如上图所示形式(比具体化模板少了<>),显示实例化可对数据类型进行强制转换。
重载解析:对函数重载、函数模板和函数模板重载,需要选择一个最匹配的函数。当有两个函数都完全匹配时,常规函数优于模板;进一步,指向非const数据的指针和引用(仅限指针和引用,因为常规实参使用的是副本)有限与非const指针和引用参数匹配。
多个参数时,一个函数要比其他所有函数都适合,其所有参数的匹配都不比其他函数差,同时要至少有一个参数匹配程度高,该函数才能更匹配。



声明:C++笔记系列均是摘自《C++ Primer Plus》(中文版第6版),图片也拍自该书。
本文深入探讨了C++中的模板概念,包括函数模板的使用、模板实例化的方式、模板的优先级顺序以及重载解析原则。文章还介绍了常规模板与具体化模板的区别,并解释了如何在不同类型间使用同一算法。
——函数模板、关键字decltype和后置返回类型&spm=1001.2101.3001.5002&articleId=107372693&d=1&t=3&u=af91d81160094168b34785b5531a3b7a)
2万+

被折叠的 条评论
为什么被折叠?



