内联函数

内联函数是指用inline关键字修饰的函数。在类内定义的函数被默认成内联函数。内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质

inline关键字只是给编译器一个建议,编译器不一定会接受这种建议。一些编译器,会将简单的函数做内联编译,即使它没有用inline关键字声明

C++编译器直接将函数体插入函数调用的地方

内联函数没有普通函数调用时的额外开销(压栈,跳转,返回)

inline int func(int a, int b)
{
return a < b ? a : b;
}

C++中内联编译的限制

  1. 不能存在任何形式的循环语句;
  2. 不能存在过多的条件判断语句;
  3. 函数体不能过于庞大;
  4. 不能对函数进行取址操作;(内敛编译后,内联函数将不存在)
  5. 函数内联声明必须在调用语句之前。

    如果存在以上冲突,C++编译器会忽略inline关键字

默认参数

C++支持设置默认参数,在函数调用的时候不赋值会使用默认值

void func(int x = 3)
{
printf("x:%d\n", x);
}

如果有多个参数,默认参数要放在参数列表最后面

void func(int a, int b, int x = 3, int y = 4)
{
printf("x:%d\n", x);
}

占位参数

有时候在函数定义时候,会有不确定参数

此时会有占位参数,调用的时候需要按位赋值

占位参数一般用于程序的拓展和对C代码的兼容

int func (int x, int y, int )
{
return x + y;
}

占位参数可以设置默认参数

设置默认参数以后,函数调用时候可以省略

int func2(int a, int b, int = 0)
{
return a + b;
}

函数重载

C++允许函数重载

C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,函数重载不涉及函数返回值

void myprint(int a)
{
printf("a:%d \n", a);
} void myprint(int a, char b)
{
printf("a:%d \n", a);
}

当函数重载与默认函数参数时候会产生二义性

int func(int a, int b , int c= 0)
{
printf("a:%d ", a);
return 0;
} int func(int a, int b)
{
printf("a:%d ", a);
return 0;
}

当使用func(1,2)调用函数时候,编译器会不知道如何调用,会编译失败

最新文章

  1. [NOIP2011] 观光公交(贪心)
  2. jquery mobile button样式设置
  3. Spark Streaming源码解读之数据清理内幕彻底解密
  4. php学习笔记2016.1
  5. win10前面板耳机没声音
  6. while do while以及穷举和迭代
  7. [Leetcode] Interleaving String
  8. [Angular 2] Select From Multiple Nested Angular 2 Elements
  9. HDU 3749 Financial Crisis 经济危机(点双连通分量)
  10. RMAN之进入RMAN(转)
  11. openssl 安装
  12. XMPP个人信息展示
  13. PHP7链接MySQL
  14. 【转载】Linux Cache Mechanism Summary(undone)
  15. idea启动TOMCAT html 乱码
  16. django pymysql
  17. PHP7语法知识(一):语言基础
  18. 【Codeforces Round 1117】Educational Round 60
  19. [LeetCode&amp;Python] Problem 217. Contains Duplicate
  20. python_运算符与表达式

热门文章

  1. Python之列表与元组的区别详解
  2. django环境配置(基于命令行安装)
  3. perl 数组变量(Array) 转载
  4. BZOJ 3270: 博物馆 概率与期望+高斯消元
  5. gulp 使用指南
  6. super 和 this 的区别
  7. 19.Python转义字符及用法
  8. MySQL:如何选取Table中的50到100行
  9. Python最高效爬虫框架
  10. ARTS打卡计划第五周