wangc
Oct 10, 2017
函数
为什么要有函数?
- 有组织:复杂的程序模块化,简单化,分而攻之。
- 可重用:不用复制粘贴。
- 易测试:减少代码量,更容易找出Bug。
- 可扩展:不动代码主体就可以增加新功能。
- 抽象化:比如标准库,把写好功能的代码封装成黑箱,使用者只需知道接口,无需知道原理。 函数与方法
- python中类中的函数叫做方法,C/C++都称作函数,Java中都称作方法。 tips
- 每次调用函数,都会创建该函数的所有形参,形参的作用域是函数体。
1. 定义函数
修饰符 返回值类型 函数名(参数列表){
//代码省略...
return 结果;
}
- 修饰符:Java中修饰符,public static 固定写法
- 返回值类型:表示方法运行的结果的数据类型,方法执行后将结果返回到调用者
- 参数列表:方法在运算过程中的未知数据,调用者调用方法时传递
- return:将方法执行后的结果带给调用者,方法执行到return ,整体方法运行结束
2. 函数重载
方法重载:比如在Java中叫做方法重载,指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。 参数列表:个数不同,数据类型不同,顺序不同。 重载方法调用:JVM通过方法的参数列表,调用不同的方法。
public class MethodOverload {
public static void main(String[] args) {
myPrint(100);
myPrint("Hello");
}
// 方法重载
// 模拟输出语句中的println 方法效果,传递什么类型的数据就输出什么类型的数据
public static void myPrint(byte num){System.out.println(num);}
public static void myPrint(short num){System.out.println(num);}
public static void myPrint(int num){System.out.println(num);}
public static void myPrint(long num){System.out.println(num);}
public static void myPrint(float num){System.out.println(num);}
public static void myPrint(double num){System.out.println(num);}
public static void myPrint(char c){System.out.println(c);}
public static void myPrint(boolean is){System.out.println(is);}
public static void myPrint(String str){System.out.println(str);}
}
3. 传递实参
- 按值传递
函数实际接受的是实参的副本,最基本的传递方式
- 传递指针
这时候就可以在函数内部通过指针修改实参的值了。
int abs(int* pnum)
{
return (*pnum>0)?*pnum:-*pnum;
}
void main()
{
int num(3);
int* pnum(&num);
cout << abs(pnum) << endl;
}
其他
- const修饰符
避免意外修改函数参数\
`int func(const int& num)`