当前位置:   article > 正文

C++输入&输出、缺省参数、函数重载【C++初阶】_c++ 函数 输出参数

c++ 函数 输出参数

目录

一、C++输入&输出

二、缺省参数

1、概念

2、分类

(1)全缺省

(2)半缺省

三、函数重载

1、概念

2、原理------名字修饰


一、C++输入&输出

在C语言中,我们常用printf和scanf这两个函数进行输入输出。

在C++中,除了可以用这两个函数之外,还可以使用cin和cout进行输入输出。

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int a;
  6. cin>>a;
  7. cout<<"Hello world!!"<<endl;
  8. }

说明:

1、<<是流插入运算符,>>是流提取运算符

2、使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含<iostream>头文件,以及按命名空间使用方法使用std。

3、使用cin和cout不需要像printf和scanf那样手动控制格式,C++的输入输出可以自动识别变量类型。

4、endl是特殊的C++符号,表示换行符,包含在<iostream>头文件中。

注意:早起标准库将所有功能在全局域中实现,声明在.h后缀的文件中,使用时只需要包含对应的头文件即可,后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间,规定C++头文件不带.h;旧的编译器(vc6.0)中还支持<iostream.h>格式,后续编译器已不支持,因此推荐使用<iostream>+std的方式。

二、缺省参数

1、概念

缺省参数就是在函数声明时(没有声明就在定义时)给函数参数一个缺省值,在调用该函数时,若没有指定实参则采用该形参的缺省值。

  1. void Func(int a=0)
  2. {
  3. cout<<a<<endl;
  4. }
  5. int main()
  6. {
  7. Func();//输出0
  8. Func(10);//输出10
  9. return 0;
  10. }

2、分类

(1)全缺省

函数的每一个参数都给了缺省值。

(2)半缺省

函数缺省值没给全。

  1. void Func(int a=0,int b=1,int c)
  2. {
  3. cout<<a<<endl;
  4. cout<<b<<endl;
  5. cout<<c<<endl;
  6. }

注意:

1、缺省参数必须从左往右依次给,不能间隔着给。

2、缺省参数不能在函数声明和定义时同时出现。

补充:占位参数

占位参数也可以给缺省值:

void func(int a,int = 10)

{} 

func(10);//调用

三、函数重载

1、概念

在C语言中是不允许两个函数同名的,但C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表不同(参数个数或类型或类型顺序)不同,常用来处理实现功能类似数据类型不同的问题。

注意:只是返回类型不同的话,并不能构成函数重载。

why?举个例子

对于下面两个函数,如果我这样调用的话,由于省略了返回类型,就无法辨别到底调用了哪一个函数。

f(1,'a');
  1. void f(int a,char b)
  2. {
  3. }
  4. int f(int a,char b)
  5. {
  6. }
  1. 参数类型不同
  2. int Add(int a,int b)
  3. {
  4. return a+b;
  5. }
  6. double Add(double a,double b)
  7. {
  8. return a+b;
  9. }
  10. //参数个数不同
  11. void Func()
  12. {
  13. cout<<1<<endl;
  14. }
  15. void Func(int a)
  16. {
  17. cout<<a<<endl;
  18. }

2、原理------名字修饰

为什么C语言不支持函数重载,而C++支持函数重载呢?

 在一个C/C++程序中,一个程序要运行起来,需要经历一下几个阶段:预处理、编译

、汇编、链接。

C语言在编译后,函数名字的修饰并没有改变,而C++在编译后,函数名字的修饰发生了改变,编译器将函数的参数类型信息添加到了名字中。

举个例子,现有两个函数,分别名为Add和func

在C语言的编译器中:

f6af3f5ec72a4a3f910de55ea97161b1.jpeg

在C++的编译器中: 

aee183448dd04546a68df4e67945be79.jpeg

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/798296
推荐阅读
相关标签
  

闽ICP备14008679号