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

目录

一、C++输入&输出

二、缺省参数

1、概念

2、分类

(1)全缺省

(2)半缺省

三、函数重载

1、概念

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


一、C++输入&输出

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

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

#include <iostream>
using namespace std;
int main()
{
    int a;
    cin>>a;
    cout<<"Hello world!!"<<endl;
}

说明:

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、概念

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

void Func(int a=0)
{
    cout<<a<<endl;
}
int main()
{
    Func();//输出0
    Func(10);//输出10

    return 0;
}

2、分类

(1)全缺省

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

(2)半缺省

函数缺省值没给全。

void Func(int a=0,int b=1,int c)
{
    cout<<a<<endl;
    cout<<b<<endl;
    cout<<c<<endl;
}

注意:

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

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

补充:占位参数

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

void func(int a,int = 10)

{} 

func(10);//调用

三、函数重载

1、概念

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

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

why?举个例子

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

f(1,'a');
void f(int a,char b)
{

}
int f(int a,char b)
{

} 
参数类型不同
int Add(int a,int b)
{
    return a+b;
}
double Add(double a,double b)
{
    return a+b;
}
//参数个数不同
void Func()
{
    cout<<1<<endl;
}
void Func(int a)
{
    cout<<a<<endl;
}

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

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

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

、汇编、链接。

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

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

在C语言的编译器中:

f6af3f5ec72a4a3f910de55ea97161b1.jpeg

在C++的编译器中: 

aee183448dd04546a68df4e67945be79.jpeg

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值