C++入门知识


前言

c语言在初学的时候可能大家上手比较简单,但是C++上手需要具备一定的语法功底,下面我们一起来学习C++入门需要的一些东西。

一、什么是命名空间

 1.命名空间

根据我自己的理解来看,命名空间就像是一个库,里面有着变量,结构体,函数等等。

因为在c语言中一些被定义的函数名就不能被使用,像下面的rand一样(包含在stdlib.h的头文件中),

所以C++就想通过命名空间来解决这个问题,我们就可以在命名空间定义一个rand变量,

然后通过引入命名空间的方法来解决(方法下文会讲).

但是当你创建一个命名空间时,C++中有一些特定的规则我们需要掌握。

1.命名空间空间可以嵌套定义(就是可以在一个工程中定义多个命名空间)

2.在同一个工程中定义多个名字相同的命名空间,编译器最后会合成在一个命名空间中

下面来讲讲命名空间的使用问题

通过这个我们可以看到命名空间中的变量不能直接使用,那我们应该如何正确使用命名空间中的东西呢?

一共有三种方式

1.加命名空间名称及作用域限定符

2.使用using将命名空间中某个成员引入

3.使用using namespace 命名空间名称 引入 

第三种方法和第二种不同在第三种方法相当于引用了整个命名空间,而第二种方法相当于只引用了命名空间中的a;

2.C++输入和输出

我还记得刚刚学c语言的时候,我们老师就跟我们说,首先叫你们用c语言问候一下这个美好的世界

接下来我们首先用C++来问候我们美好的世界.

这里的std是C++标准库的命名空间,C++将标准库的定义都放在这里。

这里的<iostream>我们就简单地把它认为是一种流就可以了

cout是标准输出对象(控制台)和cin是标准输入对象,必须要包含<iostream>头文件

他们有一个特别好的地方就是能够自动识别类型,如果是c语言的话,我们得用%s来输出hello world

但是这里就能自动识别类型输出。

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

后面的endl就相当于c语言中的’\n',换行符

3.缺省参数

缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实
参则采用该形参的缺省值,否则使用指定的实参。

就比如说这个题,根据缺省参数的定义,大家能不能算出k的值?

我们只传了一个参数1,那么这个1就会被x接收,那么y没有接收到值就会默认为缺省值5

所以k的值最后应该是6.

缺省参数又分为全缺省参数和半缺省参数

全缺省参数的定义是每个参数都有缺省值

半缺省参数的定义是不是每个参数都有缺省值(并不是只有一半参数有缺省值)

半缺省参数必须从右往左依次来给出,不能间隔着给

4.函数重载

创建C++的这个大佬就觉得啊,c语言在这个函数名太不方便了,不能同时拥有两个相同的函数名

所以就创建了这个函数重载。

函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这
些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型
不同的问题。
那么编译器是如何正确匹配正确的函数的呢,他就会根据你传的参数来分析,你传的是什么类型的参数,
他就会跟你匹配对应的函数。

5.引用

我们在学习c语言的时候,是不是觉得指针那块特别复杂,比如说在你想改变1级指针的指向时,我们就必须

使用2级指针,在某些情况下觉得太复杂了一点,这时我们就可以用到引用。

我们可以看到a和k的地址是一样的,指向的是同一块空间,我们的&放在类型的后面就可以起到引用的作用

引用不是定义一个新变量,而是给已有的变量取一个别名

引用有以下几个特性:

引用类型和引用实体必须是同种类型的。

引用在定义时必须初始化。

一个变量可以有多个引用。

引用一旦引用一个实体就不能改变。

当运用与常引用时

当引用运用到函数当中时

我们来看这张图片,我们将i作为参数传过去,但是接受的是一个引用,就相当与给i起了个别名,本质上应该说是x和i指向同一块地址

所以x改变,i自然就改变了

当引用做返回值时

我们再来分析,static是表示这个变量创建在静态区,所以即使这个函数调用完毕后也不会销毁

我们返回的是i,但是返回类型是int&,就相当与给i起了个别名,然后接收的k也是int&类型,就

相当与给i的别名起了个别名,我们之前说过一个变量可以有多个别名。

传值和传引用的效率比较

我们可以看到,两个还是存在差异的,至于为什么会存在差异呢,是因为我们在传值的时候

其实传的是一份临时拷贝,首先你得把这个值拷贝一份,然后再传过去,但是引用就不一样,直接找到你传的值的地址,

所以就能迅速传过去。

引用和指针的不同点:

1. 引用概念上定义一个变量的别名,指针存储一个变量地址。
2. 引用在定义时必须初始化,指针没有要求
3. 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何
一个同类型实体
4. 没有NULL引用,但有NULL指针
5. 在sizeof中含义不同引用结果为引用类型的大小,但指针始终是地址空间所占字节个数(32
位平台下占4个字节)
6. 引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小


总结

以上就是一部分C++的入门知识,如有不对,请大家多多指正,后续会继续更新C++入门知识

  • 28
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZENG zhi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值