博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++学习笔记-C++对C语言的函数拓展
阅读量:4570 次
发布时间:2019-06-08

本文共 1156 字,大约阅读时间需要 3 分钟。

内联函数

内联函数是指用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)调用函数时候,编译器会不知道如何调用,会编译失败

转载于:https://www.cnblogs.com/cj5785/p/10664741.html

你可能感兴趣的文章
您访问的URL地址不被允许。
查看>>
docker 初探之简单安装 ----Windows10
查看>>
UI基础篇之UIScrollView
查看>>
vc 网络编程(socket)
查看>>
tex中把参考文献标题删除
查看>>
Linux下NFS服务器的搭建与配置
查看>>
1501 二叉树最大宽度和高度
查看>>
Linux学习总结(七)-磁盘管理 du df fdisk
查看>>
Oracle卸载
查看>>
知识总结
查看>>
xml解析中的sax解析
查看>>
一个JS的面试题及其解析
查看>>
python小白-day5 time&datetime模块
查看>>
ffmpeg 转换VC工具已经可以生成工程文件(续)
查看>>
OpenGL + C++ + Java
查看>>
UOJ #15 虫洞路线
查看>>
一些较好的书
查看>>
MySQL命令:约束
查看>>
音频焦点问题
查看>>
Operating System-Thread(2) Multi-Process-Parallel vs Multi-Thread-Parallel
查看>>