初探C++

本文介绍了C++中C语言增加的关键字,如switch和class,以及命名空间的使用、冲突解决方法,包括命名空间的引入、嵌套和使用方式。此外,还讲解了C++的输入输出、缺省参数和函数重载的概念及其应用。
摘要由CSDN通过智能技术生成

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语言在编译阶段则不具备这种功能。

最后,谢谢你的阅读,希望能够帮助到你,我们一起进步!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值