专业定制网站公司,php html5企业网站源码,各国网站建设排名,网站动图怎么做目录
#xff08;一#xff09;缺省参数
全缺省参数
半缺省参数 缺省参数只能在函数的声明中出现#xff1a;
小结#xff1a; #xff08;二#xff09;函数重载
函数重载的定义 三种重载 在上一篇中#xff0c;我们从第一个Cpp程序为切入#xff0c;讲解了Cpp的…目录
一缺省参数
全缺省参数
半缺省参数 缺省参数只能在函数的声明中出现
小结 二函数重载
函数重载的定义 三种重载 在上一篇中我们从第一个Cpp程序为切入讲解了Cpp的命名空间要解决的问题以及输入输出流。 接下来开始本篇内容- 长长的路慢慢的走 一缺省参数 缺省参数是Cpp另一个基于C上的新增加的语法实现一个项目离不开一个一个的功能为了更加方便的重复使用同一个功能我们通常将代码段封装成“高内聚低耦合”的函数中。 想要使用函数一般要向他传递参数。在C中我们必须按照函数定义时的参数一一对应的传参
#includestdio.hfloat sub(float a,int b)
{return (float)(a-b);
}int main()
{printf(%lf\n,sub(5.6,4));return 0;
} 在Cpp中有缺省参数的语法 在函数定义的时候给参数一个值这个值是“备用的”如果这个在调用此函数时没有给参数传值那么这个参数就会使用这个设定的默认值。 #includeiostreamint func(int a 50)
{return a;
}
int main()
{std::cout func(10) std::endl;std::cout func() std::endl;return 0;
} a默认值为50有传值按照传递的值无传值则默认为50. 缺省参数按照缺省的情况不同分为全缺省参数和半缺省参数 全缺省参数 在定义函数的时候所有的参数都有默认值
//在定义的时候对所有的参数设置有默认值void fun_c(int a 1,int b 2,int c 3)
{std::cout a a std::endl;std::cout b b std::endl;std::cout c c std::endl;
}半缺省参数
在定义函数的时候部分参数有默认值
//部分参数有默认值——第一个参数a没有默认值其余参数有默认值void fun_c2(int a,int b 5,int c 52)
{std::cout a a std::endl;std::cout b b std::endl;std::cout c c std::endl;
} 但是有默认值的参数要放在函数定义的参数括号的最右侧否则编译器报错 将有默认值的参数放到函数参数括号的右侧后没有错误提示 在使用的时候由于有默认值的参数都放在函数的参数括号的最右侧无默认值的参数在函数括号的左侧所以手动传入的参数主要是给无缺省参数的参数。 无法跨过没有默认值的参数直接给有默认值的参数传参 void func2(int a ,int b 5, int c 8)
{std::cout a a std::endl;std::cout b b std::endl;std::cout c c std::endl;std::cout std::endl;
}int main()
{func2(,1,2);func2(1,2);return 0;
} 缺省参数只能在函数的声明中出现
在项目内部时缺省参数统一放在函数的声明中 main.cpp #includetest.hint main()
{std::cout add(1,2) std::endl;std::cout add() std::endl;return 0;
}
add.h
#ifndef TEST_H
#define TEST_Hint add(int a 1,int b 1);#endif add.cpp int add(int a,int b)
{return ab;
} 编译成功按照传入参数和为3按照默认参数和为2 对其他情况 在定义中设置默认参数 在定义和声明中都设置默认参数 都无法编译通过。 只有在声明中设置默认参数编译可以成功 小结 1.半缺省参数有默认值的参数必须从右向左来给出不能间隔着给 2.缺省参数不能在函数的声明和定义中同时出现要将缺省参数放在声明中。 二函数重载 在C中我们无法定义任何一个同名的函数。当我们想要实现一系列功能类似知识数据类型不同的函数时我们只能在函数名上附带上一些标记 add_int();
add_dou();
add_flo();
... 这就不利于我们编程。因为当函数类型更多时记忆十分繁琐。 函数重载是Cpp为了方便编程在C的基础上添加的新的语法。 函数重载的定义 函数重载是在同一个作用域中可以声明几个功能类似的同名函数但是需要满足的条件是函数的形参列表不同- 具体来说形参列表不同指的是 参数个数类型类型顺序不同 三种重载 类型不同 int add_(int a,int b)
{return ab;
}
double add_(double a,double b)
{return ab;
}int main()
{std::cout add_(1,2) std::endl;std::cout add_(1.5,2.6) std::endl;return 0;
} 参数个数不同 int add_(int a,int b)
{return ab;
}int add_(int a,int b,int c)
{return abc;
}int main()
{std::cout add_(1,2) std::endl;std::cout add_(3,5,9) std::endl;return 0;
}类型顺序不同 void fun_c4(int a,char c)
{std::cout a std::endl;std::cout c std::endl;
}void fun_c4(char c,int a)
{std::cout a std::endl;std::cout c std::endl;
}int main()
{fun_c4(5,v);fun_c4(p,5);return 0;
} 以上三种情况都是正确的可以编译通过编译器似乎可以自动识别函数的参数类型他根据我们传入参数的类型来自动调用参数类型合适的函数。 但是为什么呢 编译的时候编译器是怎么识别的呢 与C不同的是Cpp对函数名进行了不同的修饰同名的函数由于修饰的内容不同所以最终Cpp编译器对于同名函数的名称能够区分开。 至于如何区分具体请听下回解析~ 完~
未经作者同意禁止转载