《C++ Primer Plus》第8章 函数探幽
第8章 函数探幽
C++内联函数
省略原型并将定义放在本该提供原型的地方以使用内联函数。
内联函数不能递归。
引用变量
引用变量是已定义变量的别名。
引用变量必须在声明引用时将其初始化。
引用作为函数参数时应尽可能使用const,这样可以:避免无意中修改数据造成的编程错误;使函数能够处理const和非const实参;使函数能够正确生成并使用临时变量。
函数返回引用时,应避免返回函数终止时不再存在的内存单元引用。
默认参数
在原型中将默认值赋给参数以实现默认参数的设置,而函数定义与没有默认参数时完全相同。
带参数列表的函数必须从右向左添加默认值。
函数重载
通过函数重载可以设计一系列函数完成相同的工作但使用不同的参数列表,参数列表也称为函数特征标。
函数重载中没有匹配的原型可能会导致类型转换。
类型引用和类型本身视为同一个特征标。
是特征标而不是函数返回值类型使得可以对函数进行重载。
使用带默认参数的函数只需编写一个函数,程序也只为一个函数请求内存,修改函数时也只需修改一个;使用不同类型的参数,则需要使用函数重载。
函数模板
函数模板是通用的函数描述,它们使用泛型来定义函数,而其中的泛型可用具体类型替换。
模板并不创建任何函数,只是告诉编译器如何定义函数。
函数模板不能缩短可执行程序,最终的代码不包含任何的模板,而只包含了为程序生成的实际函数,使用模板使得生成多个函数定义更简单可靠。
模板常放在头文件中,并在需要使用模板的文件中包含头文件。
模板可以重载。
隐式实例化是编译器使用模板为特定类型生成函数定义。
显式实例化使用模板生成特定类型的函数定义
显示具体化不使用模板来生成函数的定义,而使用专门为特定类型显示定义的函数定义。
隐式实例化、显示实例化和显示具体化统称为具体化。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)