C++函数初识
文章目录
- 一、形参带默认值的函数
- 二、inline内联函数
- 三、函数重载
一、形参带默认值的函数
- 给默认值的时候,从右向左给;
- 调用效率的问题;
- 定义处可以给形参默认值,声明也可以给形参默认值;
- 形参给默认值的时候,不管是定义处给,还是声明处给,形参默认值只能出现一次。
int sum(int a, int b = 20);
int sum(int a = 10, int b);
二、inline内联函数
inline内联函数 和 普通函数的区别:
- inline内联函数在编译过程中,就没有函数的调用开销了,在函数的调用点直接把函数的代码进行展开处理了;
- inline内联函数不再生成相应的函数符号;
- 但不是所有的inline都会被编译器处理成内联函数,inline只是建议编译器把这个函数处理成内联函数(比如递归、函数复杂等情况);
- debug版本上,inline是不起作用的;inline只有在release版本下才能出现
可通过g++ -c main.cpp -o2(不能-g带调试信息)、objdump -t main.o等命令查看符号表。
#include <iostream>
using namespace std;
inline int sum(int x, int y) { //*.o sum_int_int .text
return x + y;
}
int main() {
int a = 10;
int b = 20;
int ret = sum(a, b);
// 此处有标准的函数调用过程:参数压栈,函数栈帧的开辟和回退过程
// 有函数调用的开销
// x+y mov add mov 1000000 x+y
cout << "a+b=" << ret << endl;
return 0;
}