1.内联函数
注意:内联函数不能递归。(我自己编了程序 在内联函数用了递归 程序并没有报错 结果也正常 这句话是在C++ primer plus上看到的 我想这句话的本意应该是提倡不要在内联函数里面用递归 内联函数本来就是通过避免被调用的开销来提高执行效率 用递归就和它的初衷违背了)
2.临时变量,引用参数和const
https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090929/1.jpg
https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090929/2.jpg
https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090929/3.jpg
3.将引用用于结构
https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090930/1.jpg
https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090930/2.jpg
4.将引用用于类对象
https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090930/3.jpg
5.何时使用引用参数,指针和按值传递
https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090930/4.jpg
6.函数重载
https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090930/5.jpg
下面两个原型:
编译器在检查参数列表时,将把类型引用和类型本身视为同一个参数。
https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090930/6.jpg
7.函数模板
函数模板不能缩短可执行程序。最终的代码不包含任何模板,而只包含了为程序而生成的实际函数。使用模板的好处是,它使生成多个函数定义更简单,更可靠。另外,函数模板也可以重载。
8.显式具体化
https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090930/7.jpg
C++标准使用下面的方法:
1)对于给定的函数名,可以有非模板函数,模板函数和显式具体化模板函数以及它们的重载版本。
2)显式具体化的原型和定义应以templa<>打头,并通过名称来指出类型。
3)具体化将覆盖常规模板,而非模板函数将覆盖具体化和常规模板。
https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090930/8.jpg
9.实例化和具体化
https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090930/9.jpg
https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090930/10.jpg
https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090930/11.jpg
10.编译器选择哪个函数版本