【hello C++】初识C++(上)

从今天开始进入C++的学习历程,希望在整理笔记,梳理知识,加强记忆的同时也能够帮助到大家。在以后的岁月里希望与大家共同学习,不断进步,积极思考,好好睡觉😁 

目录

1.C++的由来

 2.C++关键字

3.命名空间 

4.命名空间定义

5.命名空间使用

6.C++的输入和输出

7.缺省参数

8.缺省参数的分类


 加油!🌷

1.C++的由来

 1979年,贝尔实验室的本贾尼等人在试图分析Linux内核的时候,试图将内核模块化。

当时使用的是C语言,但对于一些复杂的、需要高度的抽象和建模的时候,C语言就不太适合。

于是一些大佬们就在C语言的基础上进行扩展,最后演变出了我们现在使用的C++。

 2.C++关键字

C++总共63个关键字,C语言32个关键字

下面我们来看一下C++的关键字,在此不做介绍,在后面学习中再细细讲来

3.命名空间 

在以前C语言的学习中,我们是无法解决命名冲突问题的,比如

 这是为什么呢?

<stdlib.h>头文件中包含一个rand()函数,在编译期间头文件中的内容会被全部展开,因此全局域中定义rand变量就与rand()形成了命名冲突,也就是我们所说的重定义,编译器对此无法进行判断

针对此问题有没有什么解决办法呢?

使用命名空间就是对标识符的名称及进行本地化,以避免命名冲突或名字污染。

4.命名空间定义

namespace关键字就是用来定义命名空间的,namespace 后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。其中可以是变量、函数、结构体。比如:

注意:namespace关键字一定要在.cpp文件中才能使用

命名空间还可以嵌套定义,比如

 在同一工程中如果存在多个名称相同的命名空间,编译器最后会将其合在同一个命名空间中。

比如下面两个命名空间最后将会被合成一个。

 注意:一个命名空间就定义了一个新的的作用域,命名空间中的所以内容都局限于该命名空间中。

在这里插一条:

当我们输出一个变量时,编译器首先在局部区找,如果找不到的话便在全局区找。

命名空间里的成员其实都是定义在全局区的。

5.命名空间使用

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

1.使用using namespace 命名空间名称引入,比如

 注意:此种方式是将命名空间中的成员全部展开,使用起来方便,但是失去了命名空间原本的隔离功能,平常练代码的时候使用,进入公司做项目时还是要慎用

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

 我们平时经常使用此方法

3.加命名空间名称及作用域限定符,比如

 此方法指定作用域,做到了最好的命名隔离,但是使用时很不方便

6.C++的输入和输出

 这里std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中

1. 使用 cout 标准输出对象 ( 控制台 ) cin 标准输入对象 ( 键盘 ) 时,必须 包含 < iostream > 头文件
以及按命名空间使用方法使用 std
2. cout cin 是全局的流对象, endl 是特殊的 C++ 符号,表示换行输出,他们都包含在包含 <
iostream > 头文件中。
3. << 是流插入运算符, >> 是流提取运算符
4. 使用 C++ 输入输出更方便,不需要像 printf/scanf 输入输出时那样,需要手动控制格式。
C++ 的输入输出可以自动识别变量类型。
5. 实际上 cout cin 分别是 ostream istream 类型的对象, >> << 也涉及运算符重载等知识,
这些知识我们我们后续才会学习。

 对于控制输出浮点数精度我们使用场景并不多,在此就不展开C++的学习,还是使用printf(),C++是兼容C语言的

7.缺省参数

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

8.缺省参数的分类

1.全缺省参数

2.半缺省参数

注意:

1.如果是半缺省参数的话,我们必须给一个实参;

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

3. 缺省值必须是常量或者全局变量;
4. C 语言不支持(编译器不支持);

还需要注意的一点是:
缺省参数不能在函数声明和定义中同时出现,一般缺省参数出现在函数声明中

还有要补充的一点:

如果一个函数是全缺省参数,一个是无参的,那么调用的话 编译器会无法区分

 今天的内容就到这里啦,还请大家多多关注,有什么不足的地方还请大家评论指出,谢谢大家!💕

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

瞳绣

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

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

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

打赏作者

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

抵扣说明:

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

余额充值