当前位置:首页 » 《关于电脑》 » 正文

C++之入门一

26 人参与  2024年03月21日 17:13  分类 : 《关于电脑》  评论

点击全文阅读


????!!??‧✧̣̥̇‧✦??‧✧̣̥̇‧✦ ??‧✧̣̥̇:Solitary_walk

      ⸝⋆   ━━━┓
     - 个性标签 - :来于“云”的“羽球人”。 Talk is cheap. Show me the code
┗━━━━━━━  ➴ ⷯ

本人座右铭 :   欲达高峰,必忍其痛;欲戴王冠,必承其重。

??????? 
???自???
???信???
??? ???    希望在看完我的此篇博客后可以对你有帮助哟

???????   此外,希望各位大佬们在看完后,可以互相支持,蟹蟹!
???????


 目录:

一:关键字

二:命名空间

三:C++输入和输出

四:缺省参数

五:函数重载

六:引用

七:内联函数

八:auto关键字(C++11)

九:基于范围的for循环(C++11)

十:指针空值:nullptr(C++)


 思维导图:

1:关键字

学过C语言应该对关键字这一个概念都不陌生吧,在C语言里面,有32个关键字,而我们的C++里面有63个关键字

以下是C++中的关键字,对于初期学习C++的小白而言(不如我),不太建议大家全部背下来,一个是不太理解,其次是容易忘记,所以建议大家可以在学习的过程边学边记

 

2:命名空间
2.1前言

在C中,自定义的变量……是不许和标准库里面重名的

具体见下:

1)

 2)

 这时候发生了冲突(命名冲突)

C++中用关键字:namespace来解决这个问题

 2.1命名空间的定义

namespace + 名字 +{ }

注意:{ }后面是没有分号的,不用于定义结构体

命名空间也是可以支持嵌套定义

2.2命名空间的使用

第一种方法:指定的命名空间的名字+域作用限定符(::)

第二种方法:使用using 将某个成员引入

第三种方法: 使用using namespace +名称 :来进行引入

 总的来说:对于日常的练习,可以进行全部展开:using namespace std ;

对于大型的项目工程,可以是部分展开(指定展开)

3:C++输入和输出

对于这两个运算符,姑且一笔带过

3.1 流插入运算符 <<

当我们想在输出设备(终端)进行打印的时候,就需要用到流插入运算符(注:endl 是换行的意思等价于C语言的 ‘\n’)

3.2流提取运算符>>

同理,有输出,自然就有输入

4:缺省参数
4.1概念
缺省参数是 声明或定义函数时 为函数的 参数指定一个缺省值 。在调用该函数时,如果没有指定实 参则采用该形参的缺省值,否则使用指定的实参。
4.2分类以及使用

全缺省参数:调用函数的时候没有传任何的参数

半缺省参数:调用参数的时候有参数

 

注意:

1. 半缺省参数必须 从右往左依次 来给出,不能间隔着给 2. 缺省参数 不能在函数声明和定义中同时出现
5:函数重载
5.1概念
C++ 允许在 同一作用域中 声明几个功能类似 的同名函数 ,这 些同名函数的形参列表 ( 参数个数 或 类型 或 类型顺序 ) 不同 ,常用来处理实现 功能类似 数据类型不同的问题。
5.2使用
5.2.1:参数的类型不一样

 5.2.2参数的个数不同

5.2.3参数的顺序类型不一样

注意:

1)当重名函数的返回类型不一致的时候,是不支持函数重载的

2)函数重载并不影响运行的效率(在编译的阶段完成函数重载的)

3)C++支持函数重载的本质:编译器的底层逻辑,是通过对调用的函数名字进行修饰来明确调用哪一个函数 ,不同的编译器对函数名字修饰是不一样的。

6:引用
6.1概念
引用 不是新定义一个变量,而 是给已存在的变量取了一个别名 ,编译器不会为引用变量开辟内存空 间,它和它引用的变量 共用同一块内存空间。
6.2使用

类型+&+别名 = 实体

1)场景1

2)场景2 

 

3)场景3:做参数

 关于实参与形参的关系:形参是对实参的一份临时拷贝(内存的申请),对形参的临时修改不会影响实参的变化

当我们用引用来作为参数,减少了空间的开辟

4)场景4 :做返回值

总结:

 如果函数以引用返回并且出了函数作用域,对应的空间并没有归还给系统,那就可以以应用返回,比如:malloc,静态区的,上一层函数栈帧的……

其实在底层逻辑上,引用也是以指针方式来实现的

引用与指针对比:

1. 引用概念上定义一个变量的别名,指针存储一个变量地址。 2. 引用 在定义时 必须初始化 ,指针没有要求 3. 引用 在初始化时引用一个实体后,就 不能再引用其他实体 ,而指针可以在任何时候指向任何 一个同类型实体 4. 没有 NULL 引用 ,但有 NULL 指针 5. sizeof 中含义不同引用 结果为 引用类型的大小 ,但 指针 始终是 地址空间所占字节个数 (32 位平台下占 4 个字节 ) 6. 引用自加即引用的实体增加 1 ,指针自加即指针向后偏移一个类型的大小 7. 有多级指针,但是没有多级引用 8. 访问实体方式不同, 指针需要显式解引用,引用编译器自己处理 9. 引用比指针使用起来相对更安全

7:内联函数
inline 修饰 的函数叫做内联函数, 编译时 C++ 编译器会在 调用内联函数的地方展开 ,没有函数调 用建立栈帧的开销,内联函数提升程序运行的效率。

 

使用内联函数是以空间换时间,注意这个空间不是指的内存,编译器在编译链接的时候,目标文件会变大,使用内联函数最大的好处之一就是避免了函数栈帧的创建与销毁

对于编译器而言,这个内联函数是否展开取决于编译器,一般当函数规模较小(10行左右的代码),并且频繁调用的函数,编译器会展开

一般不要把内联函数的声明和定义分开,编译器会报错

内联函数解决了C语言的宏的不足之处

宏的优点与不足:

优点:代码复用性强;提高了性能

不足:可读性,可维护性较差;没有类型的检查;不便于调试

8:auto关键字(C++11)
作为一 个新的类型指示符来指示编译器, auto 声明的变量必须由编译器在编译时期推导而得 。(换言之就是可以自动识别变量的类型)

 

 

使用场景:

1)对引用和指针:

 

2). 在同一行定义多个变量 当在同一行声明多个变量时,必须保证所有变量都是同一种类型 使用auto 对应的变量必须进行 初始化

 auto 不能使用的场景:

1)不能出现在形参里面

2)不能用于数组

9:基于范围的for循环(C++11)

使用范围for  的条件:

1)要有结束和起始 的范围

2)迭代的对象要实现++==的操作

10:指针空值:nullptr(C++)

暂时以一个例子来引入:

相信有不少老铁会感到疑惑。

 

在 C++98 中,字面常量 0 既可以是一个整形数字,也可以是无类型的 指针(void*)常量 ,但是编译器 默认情况下将其看成是一个整形常量 ,如果要将其按照指针方式来使用,必须对其进行强转(void *)0。

 可以使用nullptr

1)在 C++11 中, sizeof(nullptr) sizeof((void*)0) 所占的字节数相同。 2)nullptr 不需要引入对应的头文件,直接使用即可

 结语:

以上就是我要share的内容。对于刚刚学习C++的小白而言自然会有点摸不到头脑,有时也会觉得为啥要这样写呢,有什么可以应用的场景吗,别急,这只是为后面的迭代器,类和对象……打基础呢,等到后期自然就觉得非常爽了,各位大佬要是觉得还不错的话,支持一下呗!


点击全文阅读


本文链接:http://zhangshiyu.com/post/83151.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1