C++函数
一、函数的默认参数:
所谓的默认参数实际上就是函数在调用的时候可以省略参数,如:
void fun(int a=0,int b=0){ cout<<a<<" "<<b<<endl; }int main(){ fun(); //0 0 return 0; }
使用函数默认参数需要注意的问题:
参数默认必须是按从后向前的顺序, 例如 fun(int b, int n = 100) 这样是合法的, 而 fun(int n = 100, int b) 就是不合法的, 因为编译器会将传入的参数一一对应, 传入1个参数时编译器就会与默认参数对应起来, 此时b就没有传入参数, 也就自然报错了。如果传入两个那么默认参数也就没有存在的意义, 所以编译器规定参数默认必须是按从后向前。
void fun(int a=0,int b=0){ cout<<a<<" "<<b<<endl; } void run(int a,int b=10){ cout<<a<<" "<<b<<endl; } int main(){ fun(); //0 0 fun(2,3); //2 3 run(); //error:too few arguments to function 'void run(int,int)' run(2,3) //2 3 return 0; }
二、inline函数:
inline函数又叫作“内联函数”,它主要运用在函数体内容语句较少,而函数体又被频繁调用的情况下
如果这种函数前面不加上inline,会浪费很多时间:
why?:在一个函数中调用另一个函数时,首先系统会先中断该函数,做一些现场保护工作,之后会执行被调用的函数,执行完系统恢复中断,继续执行该函数,如果函数体内需要执行的语句很多的话,这点保护现场的时间可以忽略不计,但是如果函数内的语句很少,那么这个时间开销变不可忽略,而inline函数就是相当于把函数体直接放在主函数中一样,成为主函数的语句,在运行时可以直接调用,而不是重复的进行中断操作.
inline void fun(){ cout<<"Hello"<<endl; } int main(){ for(int i=1;i<=100000;i++){ fun(); } return 0; } 没有内联 //Process returned 0 (0x0) execution time : 0.616 s 内联inline //Process returned 0 (0x0) execution time : 0.632 s
在使用inline函数时需要注意的几点问题:
1>. inline 函数的函数体语句不适合过多 ;
2>. inline 函数中不能有 循环、if或switch语句, 否则编译器将会把该函数当做普通函数来处理 ;
3>. 一个文件中定义的inline函数不能再另一个文件中使用 。