一.函数声明和定义写在一起的:
1.函数定义一个变量的情况:
对于一个给了一个初始化值的函数,在调用时如果不传入新的参数,将会使用默认的初始化值,如果传入了新的参数,那么将会使用传入的参数。
#include <iostream>
using namespace std;
void fun(int a = 1) {
cout << __FUNCTION__ << " " << a << endl;
}
int main()
{
fun(10);//a输出为10
fun(); //a输出为1
system("pause");
return 0;
}
2.函数定义多个变量:
函数多个参数指定的默认规则;从右向左一次制定,中间不能间断。
错误的定义:
void fun2(int a, int b = 10, int c ) {
cout << __FUNCTION__ << endl;
cout << a << " " << b << " " << c << endl;
}
正确的定义:
void fun2(int a=12, int b = 10, int c = 100) {
cout << a << " " << b << " " << c << endl;
}
如果调用时不传入参数,将会使用所有默认值,如果只传入一个参数将会把左边的替换掉,以此类推。
#include <iostream>
using namespace std;
void fun2(int a=12, int b = 10, int c = 100) {
cout << __FUNCTION__ << endl;
cout << a << " " << b << " " << c << endl;
}
int main()
{
fun2(2); //输出结果为2,10,100
fun2(); //输出结果为12,10,100
system("pause");
return 0;
}
二.函数的声明和定义分开写:
声明和定义分开写,变量的初始化要写在声明的位置。
只在定义的地方指定变量的值会出现缺少参数的错误。
如果在同一个作用域下都定义会出现重定义的错误。
void fun3(int a=1);
int main()
{
fun3();//a的值为1
system("pause");
return 0;
}
void fun3(int a) {
cout << __FUNCTION__ << " " << a << endl;
}
如果在不同一个作用域下都定义不会出现错误,如果两者定义的值不同会默认使用局部的,如果要使用全局,要把声明放在使用的后面.
void fun4(int a=33) {
cout << __FUNCTION__ << " " << a << endl;
}
int main()
{
fun4();//使用全局的
void fun4(int a = 3);
fun4();//使用局部的
system("pause");
return 0;
}