C++对C的函数扩展
2015-07-21 23:11
295 查看
1 inline 内联函数
必须inline int myfunc(int a, int b)和函数体的实现,写在一块。 c++编译器直接将函数体插入在函数调用的地方,
内联函数省去了普通函数调用时的压栈,跳转,返回等开销。
现代的一些C++编译器能够进行编译优化,即使不写inline 关键字 定义函数,也可以进行优化。
2 默认参数
c++中可以在函数声明时,为参数提供一个默认值,当函数调用没有指定这个参数的值,编译器会自动用默认值代替。
1.只有参数列表后面的部分的参数才可以提供默认参数值。
(也就是说,不可以在一个默认参数后面跟一个非默认的参数)
2.一旦在一个函数调用中开始使用默认参数,那么这个参数后面的所有参数都必须是默认的。
3 函数占位参数
占位参数只有参数类型的声明,而没有参数名声明。 函数调用时,必须写够参数个数。
使用占位参数,一般用于程序扩展和对C代码的兼容。如果默认参数和占位参数在一起,都能调用起来。
4 函数重载
用同一个函数名定义不同的函数,即允许存在多个同名函数,但这些函数的参数表不同
函数重载是反生在一个类中里面
函数重载的判断标准:
参数个数不同
参数类型不同
参数顺序不同
重载函数的本质: 相互独立的不同的函数(静态链编)
当函数重载遇上默认参数函数,得注意是否产生二义性。
必须inline int myfunc(int a, int b)和函数体的实现,写在一块。 c++编译器直接将函数体插入在函数调用的地方,
内联函数省去了普通函数调用时的压栈,跳转,返回等开销。
现代的一些C++编译器能够进行编译优化,即使不写inline 关键字 定义函数,也可以进行优化。
2 默认参数
c++中可以在函数声明时,为参数提供一个默认值,当函数调用没有指定这个参数的值,编译器会自动用默认值代替。
1.只有参数列表后面的部分的参数才可以提供默认参数值。
(也就是说,不可以在一个默认参数后面跟一个非默认的参数)
2.一旦在一个函数调用中开始使用默认参数,那么这个参数后面的所有参数都必须是默认的。
3 函数占位参数
占位参数只有参数类型的声明,而没有参数名声明。 函数调用时,必须写够参数个数。
使用占位参数,一般用于程序扩展和对C代码的兼容。如果默认参数和占位参数在一起,都能调用起来。
4 函数重载
用同一个函数名定义不同的函数,即允许存在多个同名函数,但这些函数的参数表不同
函数重载是反生在一个类中里面
函数重载的判断标准:
参数个数不同
参数类型不同
参数顺序不同
重载函数的本质: 相互独立的不同的函数(静态链编)
当函数重载遇上默认参数函数,得注意是否产生二义性。
相关文章推荐
- PowerShell中的函数重载示例
- 通过实例理解javascript中没有函数重载的概念
- 让JavaScript 轻松支持函数重载 (Part 1 - 设计)
- JS函数重载的解决方案
- 详解JS函数重载
- C++函数重载的深入解析
- PHP小技巧之函数重载
- 浅谈个人对Java多态性的理解
- C++函数重载的几个问题
- C++学习笔记->函数重载
- C++函数重载的理解
- 4.22c++练练手
- C++中各运算符重载
- 拷贝构造函数的作用
- 函数重载的意义详细说明
- 每天学习一点c++之二——函数的重载与哑元
- 每天学习一点C++之一
- 浅谈函数重载和模板函数
- 走进C++程序世界-----函数相关(全局变量,默认参数,函数重载,内联函数)
- C++函数重载实现原理浅析