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

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

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

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

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

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

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

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

 

 

 

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

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

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

 

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