第一篇c++

目录

【前序】

1.c++前言

2.第一个c++程序

3.namespace:命名空间

那么如何访问域中的变量/函数呢?::这个符号叫做“域解析运算符”,通过这个符号可以访问命名空间、类或结构体的成员​编辑

4.命名空间域的使用

5.c++的输入输出

6.缺省参数

7.函数重载

8.引用


【前序】

这是我的第一篇c++文章,再以后写c++的过程中我也会穿插着写c语言以及数据结构初阶

1.c++前言

说到c++,很多人就感到有些害怕了,因为c++有些难,不过没有关系,可以跟着博主一起学习,共同进步。在这里不得不提到一个人BjarneStroustrup(本贾尼·斯特劳斯特卢普,这个翻译的名字不 同的地⽅可能有差异),也就是c++编程语言之父,那么c++一开始被创作的初衷呢,是祖师爷(c++之父)发现了一些c语言上的不足,所以就创造了c++来弥补c语言上的不足。那么就让我们开始吧!

2.第一个c++程序

大家来看这个程序,是不是有很多的疑问?<iostream>是什么?using name又是什么?cout是什么?不要急,咱们一点一点来

3.namespace:命名空间

在c++中存在着4大域:局部域,全局域,命名空间域,类域。而命名空间域就是今天要说的,namespace,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中存放的就是你的命名空间成员,可以是变量/类型/函数。

namespace存在的本质就是为了:不同的域中可以定义相同的变量(即除了main函数的局部域外,再创建一个命名空间域),而通过创造不同的域是为了解决同名变量冲突的问题。

那么如何访问域中的变量/函数呢?::这个符号叫做“域解析运算符”,通过这个符号可以访问命名空间、类或结构体的成员

例如上面的编程图片,namespace的名字叫做K,所以引用k中的变量就可以k::H;同样,可以看出,局部域跟命名空间域定义了相同的变量,但是这并不冲突!在namespace中也可以定义函数(如上图所示)。那么这个时候就要有人问了:namespace这个域会不会影响变量的生命周期呀?

答案是不会的!域只是影响了编译器的查找规则(编译器会先在局部域中查找,再去全局域中查找,)但是有了命名空间域,就可以指定域去查找了!

除此之外,域namespace只能定义在全局,当然他还可以嵌套定义。

那么嵌套定义,如上图,就可以用k::L::N,访问第二层命名空间域的变量。而且,等到以后写了项目工程,肯定会定义多个namespace,那么项⽬⼯程中多⽂件中定义的同名namespace会认为是⼀个namespace,不会冲突。

4.命名空间域的使用

C++标准库都放在⼀个叫std(standard)的命名空间中。

命名空间有三种使用方式:

1.指定命名空间访问,推荐这种⽅式。 

2.using将命名空间中某个成员展开,也推荐这种

3. 展开命名空间中全部成员,风险较大,并不推荐。

5.c++的输入输出

c++的输入输出在<iostream>这个库中。

<<:流插入运算符,相当于c中的printf。

>>:流提取运算符,相当于c中的scanf。

而endl=endline,也就是换行的意思,但其实endl很复杂,因为这是一个函数,在这里咱们先不做讨论。

并且,c语言的printf不支持输出复合类型,但是c++的cout与cin支持复合类型的输出与输入。

6.缺省参数

1.声明或定义函数时为函数的参数指定一个缺省值(一般为形参),则调用函数的时候,若没有指定实参,则采用形参的缺省值;若指定了实参,就采用实参即可

2.缺省分为全缺省与半缺省。

3.且半缺省只能从右往左缺省,而实参给值,是从左往右依次给值。

7.函数重载

在同一个域中要是出现了同名的函数,那么该怎么办呢?这个时候就用到了函数重载。

函数重载要满足的几大特点:

1.参数个数不同

2.参数的顺序不同

3.参数类型不同

注意:返回值不同不能作为重载条件,因为调⽤时也⽆法区分(即返回值类型不同)

8.引用

引用就是起别名,比如《水浒传》李逵,有绰号:铁牛,黑旋风,但其实指的都是同一个人。

引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名。

类型& 引⽤别名=引⽤对象;(这里&不是取地址,是引用符号)

引用的特性:

 1.引⽤在定义时必须初始化 。(这个是必须的)

2.⼀个变量可以有多个引⽤ 。

3.引⽤⼀旦引⽤⼀个实体,再不能引⽤其他的。(因为c++的引用不可以改变指向)

其实引用也有取地址的效果

第一个图片是c++版本,第二个图片是c版本,相信大家的慧眼已经发现了区别了吧,没错,这里&(引用)相当于取地址的效果了。就是给变量取别名,调用那个别名,就是在调用变量本身。

const引用涉及到一个权限的问题,给大家留个思考题,等博主下一期发表。

以上内容仅我个人理解,若有错误,还请指出!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值