1 函数基本概念 #
mindmap
id1[函数基本概念]
id1-1[什么是函数]
id1-2[函数定义与声明]
id1-3[函数的作用和意义]
id1-4[函数在程序中的位置]
id1-5[函数组成要素]
id1-6[函数名命名规则]
id1-7[参数列表]
id1-8[返回类型]
id1-9[函数体]
id1-10[函数调用机制]
id1-11[调用过程分析]
id1-12[栈帧概念]
id1-13[参数传递方式]
什么是函数
函数定义与声明
函数的作用和意义
函数在程序中的位置
函数组成要素
函数名命名规则
参数列表
返回类型
函数体
函数调用机制
调用过程分析
栈帧概念
参数传递方式
2 函数声明与定义 #
函数原型
原型语法格式
原型的作用
头文件中的函数声明
函数定义
定义语法结构
函数实现细节
内联函数定义
分离式编译
声明与定义分离
多文件编程
链接过程
mindmap
id2[函数声明与定义]
id2-1[函数原型]
id2-2[原型语法格式]
id2-3[原型的作用]
id2-4[头文件中的函数声明]
id2-5[函数定义]
id2-6[定义语法结构]
id2-7[函数实现细节]
id2-8[内联函数定义]
id2-9[分离式编译]
id2-10[声明与定义分离]
id2-11[多文件编程]
id2-12[链接过程]
3 函数参数 #
mindmap
id3[函数参数]
id3-1[参数传递方式]
id3-2[值传递]
id3-3[引用传递]
id3-4[指针传递]
id3-5[常量参数]
id3-6[参数类型]
id3-7[基本类型参数]
id3-8[数组参数]
id3-9[结构体参数]
id3-10[类对象参数]
id3-11[默认参数]
id3-12[默认参数语法]
id3-13[默认参数规则]
id3-14[默认参数使用场景]
id3-15[可变参数]
id3-16[可变参数函数]
id3-17[va_list 使用]
id3-18[可变参数限制]
参数传递方式
值传递
引用传递
指针传递
常量参数
参数类型
基本类型参数
数组参数
结构体参数
类对象参数
默认参数
默认参数语法
默认参数规则
默认参数使用场景
可变参数
可变参数函数
va_list 使用
可变参数限制
4 返回值 #
返回类型
void 返回类型
基本类型返回
引用返回
指针返回
返回值优化
RVO 返回值优化
NRVO 命名返回值优化
移动语义
多返回值实现
通过结构体返回多个值
通过引用参数返回多个值
使用 std::tuple
mindmap
id4[返回值]
id4-1[返回类型]
id4-2[void 返回类型]
id4-3[基本类型返回]
id4-4[引用返回]
id4-5[指针返回]
id4-6[返回值优化]
id4-7[RVO 返回值优化]
id4-8[NRVO 命名返回值优化]
id4-9[移动语义]
id4-10[多返回值实现]
id4-11[通过结构体返回多个值]
id4-12[通过引用参数返回多个值]
id4-13[使用 std::tuple]
5 函数重载 #
mindmap
id5[函数重载]
id5-1[重载概念]
id5-2[函数重载定义]
id5-3[重载解析规则]
id5-4[重载与作用域]
id5-5[重载条件]
id5-6[参数类型不同]
id5-7[参数个数不同]
id5-8[参数顺序不同]
id5-9[重载限制]
id5-10[返回类型不同不能重载]
id5-11[默认参数影响]
id5-12[常量性重载]
重载概念
函数重载定义
重载解析规则
重载与作用域
重载条件
参数类型不同
参数个数不同
参数顺序不同
重载限制
返回类型不同不能重载
默认参数影响
常量性重载
6 函数模板 #
模板基础
模板函数定义
模板参数
模板实例化
模板特化
全特化
偏特化
特化应用场景
模板重载
函数模板重载
模板与非模板重载
重载决议
mindmap
id6[函数模板]
id6-1[模板基础]
id6-2[模板函数定义]
id6-3[模板参数]
id6-4[模板实例化]
id6-5[模板特化]
id6-6[全特化]
id6-7[偏特化]
id6-8[特化应用场景]
id6-9[模板重载]
id6-10[函数模板重载]
id6-11[模板与非模板重载]
id6-12[重载决议]
7 内联函数 #
mindmap
id7[内联函数]
id7-1[内联概念]
id7-2[内联函数定义]
id7-3[内联机制原理]
id7-4[内联优缺点]
id7-5[内联使用]
id7-6[inline 关键字]
id7-7[类内成员函数]
id7-8[内联限制条件]
id7-9[内联与宏]
id7-10[内联函数 vs 宏函数]
id7-11[类型安全检查]
id7-12[调试支持]
内联概念
内联函数定义
内联机制原理
内联优缺点
内联使用
inline 关键字
类内成员函数
内联限制条件
内联与宏
内联函数 vs 宏函数
类型安全检查
调试支持
8 递归函数 #
递归原理
递归定义
递归调用过程
递归终止条件
递归类型
直接递归
间接递归
尾递归优化
递归应用
数学问题求解
数据结构遍历
分治算法实现
mindmap
id8[递归函数]
id8-1[递归原理]
id8-2[递归定义]
id8-3[递归调用过程]
id8-4[递归终止条件]
id8-5[递归类型]
id8-6[直接递归]
id8-7[间接递归]
id8-8[尾递归优化]
id8-9[递归应用]
id8-10[数学问题求解]
id8-11[数据结构遍历]
id8-12[分治算法实现]
9 函数指针 #
mindmap
id9[函数指针]
id9-1[函数指针基础]
id9-2[函数指针声明]
id9-3[函数指针赋值]
id9-4[通过函数指针调用]
id9-5[函数指针应用]
id9-6[回调函数]
id9-7[函数表]
id9-8[策略模式实现]
id9-9[现代替代方案]
id9-10[std::function]
id9-11[lambda 表达式]
id9-12[函数对象]
函数指针基础
函数指针声明
函数指针赋值
通过函数指针调用
函数指针应用
回调函数
函数表
策略模式实现
现代替代方案
std::function
lambda 表达式
函数对象
10 异常处理 #
异常机制
throw 语句
try-catch 块
异常传播
异常规范
noexcept 说明符
异常安全保证
异常与资源管理
自定义异常
异常类设计
标准异常继承
异常信息传递
mindmap
id10[异常处理]
id10-1[异常机制]
id10-2[throw 语句]
id10-3[try-catch 块]
id10-4[异常传播]
id10-5[异常规范]
id10-6[noexcept 说明符]
id10-7[异常安全保证]
id10-8[异常与资源管理]
id10-9[自定义异常]
id10-10[异常类设计]
id10-11[标准异常继承]
id10-12[异常信息传递]
11 函数最佳实践 #
mindmap
id11[函数最佳实践]
id11-1[设计原则]
id11-2[单一职责原则]
id11-3[函数长度控制]
id11-4[参数设计规范]
id11-5[性能优化]
id11-6[避免不必要的拷贝]
id11-7[内联函数使用]
id11-8[循环优化技巧]
id11-9[代码可读性]
id11-10[函数命名规范]
id11-11[注释编写标准]
id11-12[代码结构清晰化]
设计原则
单一职责原则
函数长度控制
参数设计规范
性能优化
避免不必要的拷贝
内联函数使用
循环优化技巧
代码可读性
函数命名规范
注释编写标准
代码结构清晰化
12 高级特性 #
lambda 表达式
lambda 语法
捕获列表
泛型 lambda
constexpr 函数
constexpr 概念
编译时计算
constexpr 限制
协程函数
协程基础概念
co_await 使用
协程应用场景
mindmap
id12[高级特性]
id12-1[lambda 表达式]
id12-2[lambda 语法]
id12-3[捕获列表]
id12-4[泛型 lambda]
id12-5[constexpr 函数]
id12-6[constexpr 概念]
id12-7[编译时计算]
id12-8[constexpr 限制]
id12-9[协程函数]
id12-10[协程基础概念]
id12-11[co_await 使用]
id12-12[协程应用场景]