c++基础之函数新特性
2017-04-01 22:28
197 查看
一、函数参数默认值
void fun(int i,int j=5,int k=10){}//✔
void fun(int i,int j=1,int k){}//✘如果后面的参数没有默认值,前面的参数也不能有默认值
二、默认值覆盖
fun(10,20,30)//在没有实参的时候使用默认值,否则实参覆盖默认值。
例子:
三、函数重载
1.定义
在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。
2.例子:
注:c++会自动匹配精确度高的函数。
四、内联函数inline
1.定义
内联函数是指用inline关键字修饰的函数
2.编译时将函数体代码和实参代替函数调用语句,节省了时间。
例子:
3.缺点
(1)内联函数是建议性的,由编译器决定。
(2)适用于逻辑简单的,不能包含while、for循环。
(3)递归函数没法使用内联函数。
void fun(int i,int j=5,int k=10){}//✔
void fun(int i,int j=1,int k){}//✘如果后面的参数没有默认值,前面的参数也不能有默认值
二、默认值覆盖
fun(10,20,30)//在没有实参的时候使用默认值,否则实参覆盖默认值。
例子:
#include <iostream> using namespace std; void fun(int i,int j=5,int k=10) { cout<<i<<" "<<j<<" "<<k<<endl; } int main() { fun(1); fun(1,2); fun(1,2,3); return 0; }运行结果:
三、函数重载
1.定义
在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。
2.例子:
#include <iostream> using namespace std; int getMax(int x,int y) { return (x>y)?x:y; } double getMax(double x,double y) { return (x>y)?x:y; } int main() { cout<<getMax(3,2)<<endl; cout<<getMax(1.2,1.5)<<endl; return 0; }运行结果:
注:c++会自动匹配精确度高的函数。
四、内联函数inline
1.定义
内联函数是指用inline关键字修饰的函数
2.编译时将函数体代码和实参代替函数调用语句,节省了时间。
例子:
#include <iostream> using namespace std; inline int getMax(int x,int y) { return (x>y)?x:y; } int main() { cout<<getMax(3,2)<<endl; return 0; }
3.缺点
(1)内联函数是建议性的,由编译器决定。
(2)适用于逻辑简单的,不能包含while、for循环。
(3)递归函数没法使用内联函数。
相关文章推荐
- C++基础::语法特性::函数重写(override)与协变返回类型(covariant return type)
- 高质量C++/C编程指南 - 第8章 C++函数的高级特性
- C++的缺省参数与函数重载是正交特性吗?
- 高质量C++/C编程指南 -- 第8章 C++函数的高级特性
- [C++基础]重载、覆盖、多态与函数隐藏(3)
- C++基础之const成员函数
- [C++基础]重载、覆盖、多态与函数隐藏
- 关于C++的一些细节[五:函数-基础]
- 第8章 C++函数的高级特性
- [C++基础]重载、覆盖、多态与函数隐藏(1)
- C++函数的高级特性-函数重载
- C++编程规范---第8章 C++函数的高级特性
- C++基础重温之一:指向函数的指针
- 高质量C++/C编程指南 -- 第8章 C++函数的高级特性
- C++基础知识(三)——函数
- C++特性探寻-继承、成员函数、this指针
- 高质量C++/C编程指南 -- 第8章 C++函数的高级特性
- C++函数的高级特性-函数重载
- C/C++基础知识:数组类型、函数类型到左值和右值的转换
- C++学习(八)函数基础