C++程序设计入门(上) 函数学习

局部变量和全局变量的访问:

全局变量的作用域时全局,局部变量的作用域是局部,若全局和局部的变量名相同的话,局部变量的改变不会引起全局变量的改变
#include<iostream> int a=1; int main() { int a=10; std::cout << a << std::endl; std::cout << ::a << std::endl; return 0; }

局部变量名与全局变量名相同时, 可使用 :: 访问全局变量          

重载函数:

已知一个程序

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); 
}

内联函数适用于短函数

猜你喜欢

转载自www.cnblogs.com/wjc2021/p/10662361.html