C++入门基础
1.关键字
从C语言到C++,关键字从32个变成了63个,这其中有我们C语言中熟知的例如switch、for等,也有class、inline等新增内容,这里我们不再多做介绍,后续内容学习到再进行相关讲解。
2.命名空间
C++中我们有大量的变量,函数,以及类,而这些如果胡乱放置,存在于全局作用域中,那么可能会造成很多的冲突。于是引入关键字namespace来对这些内容进行管理,下面介绍相关用法。
1.引入
下面看一个C语言中的命名冲突例子。
int rand=0;
int main(){
printf("%d",rand);
return 0;//和库函数命名冲突
}
2.namespace定义
namespace A1 //A1为空间名称,可以任取~
{
//命名空间中的内容,可以定义变量,函数等等,也可以进行嵌套
}
1.命名空间嵌套
namespace A2
{
//......
namespace A3
{
//......
}
}
2.同名的命名空间可以同时存在,编译器编译时会自动进行合并
举个例子:你的语文数学成绩是分开的,但是计算总成绩时,会自动的将你的成绩合并~
3. 使用
命名空间有三种使用方式
1.名称加作用域限定符 作用域限定符:::
printf("%d",A1::i);
2.使用using引入空间成员
using A1::i;
printf("%d",i);
3.使用using namespace引入整个命名空间
using namespace A1;
//....
printf("%d",i);
在学习过程中,比较推荐使用第三种方式~
3.C++的输入与输出
C++中使用cin标准输入和cout标准输出,他们存在于头文件iostream中,以及std标准命名空间中,
在日常学习时推荐直接展开std命名空间,但是要注意不要出现命名冲突
#include<iostream>
using namespace std; //不要忘记分号!
int main()
{
int a;
cin>>a;//
cout<<a;
return 0
}
注意:cin输入是两个向右的箭头,表示从键盘上读取a,cout是两个指向左的箭头
相比与printf,cout不用使用诸如%d的占位符,他可以自动识别数据类型。
但是在需要大量数据时,printf和scanf是比cin和cout效率要高的
4.缺省参数
1.基本用法
缺省参数是指在声明或定义函数时,为参数设置一个默认值。举个栗子:
void Func(int a=0)
int main()
{
Func();//没有传参,使用默认值 >>0
Func(10);//有实参,输出>>10
}
便于理解,我们可以把缺省参数理解为备胎(hhh)。
2.分类
1.全缺省
void Func(int a=1,int b=2,int c=3);
在调用时,若不传参数,则全部输出默认值。
2.半缺省
void Func(int a,int b=2,int c=3);
注意: 1.半缺省参数必须从右往左依次给出,不能间隔
2.缺省参数必须是常量或全局变量
3.C语言不支持
5.函数重载
1.概念
C++中允许在同一作用域中声明几个同名函数,他们的功能类似,他们的形参参数个数/类型/顺序必须不同,通俗的讲,就是一句话能够表达出多个例子。
int Add(int a,int b)
{
return a+b;
}
double Add(double a,double b)
{
return a+b;
}
void Func(int a,double b)
{
cout<<a<<endl;
cout<<b<<endl;
}
void Func(double a,int b)
{
cout<<a<<endl;
cout<<b<<endl;
}
int main()
{
Add(1,2);
Add(1.1,2.2);
Func(1,1.1);
Fuc(1.1,1);
}
1和2构成重载,3和4也构成重载,但是需要注意函数重载对返回值没有要求,若只是返回值不同,则不能构成重载!
2.名字修饰(了解)
为什么C++支持函数重载,而C语言不支持呢?
我们知道计算机处理代码时经过预处理、编译、汇编、链接,在编译C++代码后,函数的名字会得到**不同的修饰,**编译器会将函数参数信息添加到修改后的名字中,这样就可以根据需要调用虽然同名的函数啦!而C语言在编译阶段则不具备这种功能。
最后,谢谢你的阅读,希望能够帮助到你,我们一起进步!