局部变量和全局变量的访问:
局部变量名与全局变量名相同时, 可使用 :: 访问全局变量
重载函数:
已知一个程序
int max(int num1, int num2)
{
if (num1 > num2) return num1;
else return num2;
}
如果遇到浮点数要比大小怎么办?
解决方法是方法是生成 一个同名不同参数的函数;
编译器如何匹配重载函数调用? 看参数:1. 个数 2.类型 3.顺序
#include<iostream> using namespace std; int max(int num1,int num2) { if(num1>num2) return num1; else return num2; } double max(double num1,double num2) { if(num1>num2) return num1; else return num2; } int main() { cout << max(1,2) << endl; cout << max(3.4,5.2) << endl; return 0; }
默认参数值:
C++ allows you to declare functions with default argument values. (可以声明带默认参数值的 函数)
The default values are passed to the parameters when a function is invoked without the arguments. (无参调用函数时,默认值会 被传递给形式参数)
定义时要注意:参数列表中默认值参数应该后置
错误的代码:
1 void t1 (int x, int y=0, int z); 2 void t2 (int x, int y=0, int z);
正确的代码:
1 void t3 (int x, int y=0, int z=0); 2 void t4 (int x=0, int y=0, int z=0);
调用时需要注意:
参数列表中实参应该前置
错误代码:
t3 (1, , 20); t4 ( , , 20);
正确代码:
t3 (1); // y,z: default value t4 (1, 2); // z: default value
内联函数:
Using functions in a program:
Advantages(优点): 易读易维护
Drawbacks (缺点): 运行时性能开销 • 函数调用时:参数及部分CPU寄存器的 寄存器内容进栈,控制流跳转 • 函数返回时:返回值及寄存器值出栈, 控制流跳转
Inline functions 目的:减小性能开销
方法:代码插入到调用处
结果:导致程序变大
用法:在函数前加关键字inline
inline int max (int a, int b) { return (a > b ? a : b); }
错误的代码:
int max (int a, int b); // Call max() inline int max (int a, int b) { return (a > b ? a : b); }
内联函数适用于短函数