目录
一、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、缺省参数不能在函数声明和定义时同时出现。
三、函数重载
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语言的编译器中:
在C++的编译器中: