C++程序设计基础教程

上传人:ali****an 文档编号:134569127 上传时间:2020-06-06 格式:PPT 页数:346 大小:2.26MB
返回 下载 相关 举报
C++程序设计基础教程_第1页
第1页 / 共346页
C++程序设计基础教程_第2页
第2页 / 共346页
C++程序设计基础教程_第3页
第3页 / 共346页
C++程序设计基础教程_第4页
第4页 / 共346页
C++程序设计基础教程_第5页
第5页 / 共346页
点击查看更多>>
资源描述

《C++程序设计基础教程》由会员分享,可在线阅读,更多相关《C++程序设计基础教程(346页珍藏版)》请在金锄头文库上搜索。

1、 第二期更新内容C 11 14标准Lambda static assert typetraits Movesemantics WIN32消息 绘图 控件 资源 文件 内存 进程 线程 起源 语言特点 语言缺点 C 语言及相关软件介绍 day01 前景与方向 编译器安装与配置 由C 起源 1974年Bjarne博士在分析与研究UNIX系统由与内核分布面造成的网络流量时试图寻找一种有效工具使其更加模块化他在c的增加了类似Simula的类的机制并与1983年开发一种新的语言C C 的语言特点1兼容c且继承了c的特性并同c一样高效且可移植2属于面向对象的编程抽象封装继承多态3语言灵活 类的层次结构设计

2、 且支持指针3支持运算符重载4异常处理机制5支持泛型编程Tf Tx returnx x 6多种类库的支持 语言缺点 语言复杂支持多种设计风格复杂的c 程序正确性不易保证C 的发展方向windows平台unix平台嵌入式 C 也是一种编译型的语言推荐使用vs2013编译环境其他可选vc6 0vs2010nodepad vs2013基本支持c11标准vs2010以上Vs2013是微软公司的一款软件开发平台IDE 集成开发环境 Vs2013的安装使用1安装前需要先安装IE10提供支持2下载安装包 4安装vs2013 5安装完成 20分钟左右 如何建立一个c 程序文件 新建 visualc 类型 wi

3、n32consoleapplication自定义文件名文件路径 应用程序设置 其他选项 空工程 源文件 新建条目 c 文件 添加 完成 C 的头文件 名字空间 简单的i 0函数 一个简单的c 程序 day02 C 风格的操作 Vs2013基本设置行号设置 工具 选项 文本编辑器 所有语言 行号选中快捷键 1复制 如果你想复制一整行代码 只需将光标移至该行 再使用组合键 Ctrl C 来完成复制操作 而无需选择整行2剪切 如果你想剪切一整行代码 只需将光标移至该行 再使用组合键 Ctrl X 来完成剪切操作 而无需选择整行 3删除 如果你想删除一整行代码 只需将光标移至该行 再使用组合键 Ctr

4、l L 来完成剪切操作 而无需选择整行 4粘贴 如果你想粘贴你已经复制的内容将光标移至该行再使用组合键 Ctrl v 来完成粘贴操作5撤销 使用组合键 Ctrl Z 进行撤销操作 6反撤销 使用组合键 Ctrl Y 进行反撤销操作 7查找 Ctrl f Ctrl H替换 8移动光标 home行首end行尾 调试相关1 调试 启动 F5 调试器 2 ctrl s保存修改4 调试 逐语句 F11 5 调试 逐过程 F10 6 设置断点 F9 7 调试不执行 F7 1创建源文件c 的源文件的扩展名使用 cpp cc C cxx2 include为c 标准库的i o函数的头文件c 旧式风格 iostr

5、eam hc 新式风格 iostreamcstring3usingnamespacestd using编译指令指定使用的名字空间namespacestd标准名字空间 4cin a cout 导入c头文件 include include add h h可以不加其他库函数包含对应的头文件正常使用例 strcpy a b 编译 终端窗口 gccap1 cpp lstdc g ap1 cppvs开发环境 F7相同 名字空间的引入 定义 使用 名字空间 day03 嵌套 无名名字空间 名字空间的引入 在C 中名称可以是变量函数结构体类及类的相关成员使用第三方类库时极有可能出现名称冲突c 利用作用域的特性

6、引入了名字空间的概念名字空间 名字空间是一种描述逻辑分组的机制send sendEx send sendEx 防止命名冲突跨文件访问注意 名字空间可以是全局的可以是位于另一个名称空间中不可以存在于代码块中 1定义 namespaceA intI doubled voidshow namespaceB intIfloatf A中的I与B中的I并不发生冲突2相同名字空间可以多次添加补充名字空间的内容namespaceA show 非用户定义的名称空间存在于全局命名空间 intI 使用 A I 0 B I 1 I 2 全局命名空间 为作用域解析运算符 域运算符 1Using 为了避免每次都使用名字空

7、间时都要其进行名字空间限定可以使用using对名字空间内的内容进行特定区域的声明usingA I using声明std cout再次使用可以直接调用名称而无需增加空间限定这种声明可以全局全局域同名变量std coutintInamespaceA inti main2using 作为编译指令的使用使对应名字空间内的所有内容可用且使用时可以省略作用域解析运算符usingnamespaceA 注意事项 1避免歧义usingA I usingB I I 1 哪一个 2不要用using声明相同名称的内容usingA I intI 3using做编译指令时名称空间为全局如果局部于名称空间的名字相同则局部覆

8、盖名字空间内容namespace externinti 4局部名称会覆盖全局与using指令的名字空间内容但可以用I 局部 I 全局 A I 名字空间 区分使用5using声明比using编译安全 声明是指定具体内容编译器发出指示编译指令导入全部名字空间内容可能发生冲突覆盖时编译器不会发出警告 名字空间的嵌套 NamespaceA inta namespaceB intb 访问 A B b 1 未命名名字空间 内部链接特性与static修饰的内容特性相同Namespace inta cout a endl 补充 1Iostream相关函数存放在std的名字空间内UsingStd cout 内联

9、名字空间 c 11 关键字inline一种新的嵌套名字空间的使用方式嵌套在名字空间的内联名字空间在使用时不需其名字空间进行限定使用Inlinenamespaceinspace 布尔类型 string类型 结构体 数据类型 day04 联合 枚举 1新的数据类型 布尔类型 bool表示布尔量的数据类型取值 由字面值常量true 非零 真false 0 NULLfalse0 构成trueboolisok true boolnotok false 2字面值truefalse可以通过提升转换为int类型true1false0inta true a 1 3任何基本类型都可以被隐式转换为布尔类型转换后非0

10、为真0为假 二String类型 类 自动处理大小 使用需要添加头文件stringC语言中是用字符数组来存放字符串chara1 10 abc a2 2 a 0 1初始化 stringstr1 stringstr2 abc 2String可以做赋值拼接等功能 结构体 在c 中结构体内允许定义函数且结构体在计算大小时为1而C中为0在定义结构体时可以省略关键字struct联合 定义时可以省略联合名为匿名联合 访问时可以不用加联合的前缀X 枚举 枚举类型在c 中为一个独立的类型不能把一个整数赋值给一个枚举变量 C 11 1类型的占位符auto根据初始化的内容推断变量类型作用简化代码2nullptrstd

11、 nullptr t类型的值 用来指代空指针nullptr和任何指针类型以及类成员指针类型的空值之间可以发生隐式类型转换 同样也可以隐式转换为bool型 强类型枚举C 11中通过引入了一个称为强类型枚举的新类型 修正了这种情况 强类型枚举由关键字enumclass标识 它不会将枚举常量暴露到外层作用域中 也不会隐式转换为整形 并且拥有用户指定的特定类型 传统枚举也增加了这个性质 函数重载 函数多态 重载机制 哑元函数 函数重载一 day05 1概念 同一作用域的一组参数列表不同 函数名相同的函数这组函数叫函数重载 C 允许定义相同名称的函数 作用 重载函数通常用来命名一组功能相似的函数 这样做

12、减少了函数名的数量 避免了名字空间的污染 对于程序的可读性有很大的好处 一物多用 参数列表不同 1参数类型不同2参数顺序不同3参数个数不同重载版本根据参数的匹配度进行选择 注意 1 1与函数参数的变量名无关1 2函数的返回值类型与重载无关2函数重载的实现原理是通过c 换名实现的extern C intfun 的形式可以以c的方式生成函数名 无换名机制 3使用场景 当函数基本上执行相同的任务使用不同形式的数据时 哑元函数 缺省参数 内联函数 函数重载二 day06 哑元函数 参数只有类型没有形参名的函数voidfun int 功能 1保持向前兼容性2做函数的区分Toperator Toperat

13、or int 缺省参数如果函数的形参有缺省值 当函数调用时没有传递实参 那么形参就使用缺省值 如果调用函数时传递了实参 那么形参就使用实参的值注意 1缺省参数靠右原则如果一个函数有多个参数且部分参数有缺省值那么缺省值的参数必须靠右 在编译期间确定参数 2如果函数的声明和定义分开那么缺省参数只能写在函数的声明部分3注意防止重载的冲突 歧义 4c 中函数的规则不接受任何参数 否则可能构成重载 5凼数参数的缺省值叧能在凼数声明丨指定 3内联 函数使用关键字inline关键字修饰的函数叫做内联函数函数调用过程 调用用后立即存储该指令的内存地址将函数参数复制到堆栈跳到标记函数起点的内存单元执行函数代码

14、可能还有返回值放入到寄存器中 将返回值弹出然后跳回到地址被保存的指令处内联的实质 就是把函数编译好的二进制代码替换成函数的调用指令 省去了调用开销 空间换取时间 注意 1类中直接定义的函数自动被处理成内联函数 所以一般把内联函数放在头文件中2inline是一种请求 实现方式取决于编译器 特别是当函数较大或是递归的时候 1引用的概念 2如何创建一个引用 3引用的本质 指针与引用 day07 4引用的应用 5引用与指针 1引用 引用是已定义变量的别名 为c 新增的一种复合类型2创建一个引用 intvar i int 3引用的本质 引用的内部是由指针完成实现的int double 其本身并非一个实体

15、类型 可由sizeof证明 int double 4引用的应用 4 1做函数的参数省去函数参数进行复制时的内存开销常引用型的参数可以防止实参被无意修改且可以接受常量型与非常量型参数foo constint i I 0 foo a 4 2做函数的返回值做返回值时需保证返回值的有效性注意 不能返回局部变量的引用也可以返回常引用型的返回值 补充 左值与非左值 右值 一般的左值参数是可以被引用的数据对象如 变量数组元素结构成员引用和解除引用的指针都是左值非左值包括字面常量 引号括起的字符串除外 它们由其地址表示 和包含多项的表达式intI I 10 10 I strings1 s2 s3 s4 a 临

16、时变量temp a 1 右值intc a b 右值 abc abc a 1 左值int右值引用 5指针与引用5 1指针是一个实体存放地址而引用仅是一个内存的别名5 2引用必须初始化且初始化后不可更换其引用的目标指针可以不初始化且其指针的指向的内容可随时更换 常指针除外 5 3引用不可以为空指针可以为空 char pc 0 char 5 4引用的大小为所引用变量的大小指针为4个字节5 5因引用是一个内存的别名所以不存在引用引用的引用和引用数组但存在指向指针的指针和指针数组5 6在使用时 如果你的变量的指向可能发生变化或为空 请使用指针 如果你的变量不允许为空 可以引用5 7不存在空引用的事实意味着引用的代码比指针的代码效率要高 无需检查其他合法性 5 8重载某些运算符时 必须用到引用做返回值 C语言的类型转换 C 的类型转换 Static cast 类型转换 day08 Const cast Reinterpret cast C 提供丰富的不同的数据类型当不同类型在进行算术运算参数传递等一系列的操作时因计算机的特性不得不将不同的类型进行转换后再进行操作1初始化和赋值进行的转换 int d

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号