




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C Overview 潘爱民panaimin 内容简介 C 语言基础Object BasedProgrammingObject OrientedProgrammingSTL C 之我见 C 语言在变化 我们的概念也要调整变化 最能反映OO思想的语言 掌握C 有助于理解OO 区分C和C C 不是C语言 不要用看待C语言的方式来看待C 掌握C 语言的基础知识 操作系统的基础知识文件API 内存管理 infrastructures计算机原理汇编语言C C 是产生ASM代码的framework编译和执行过程编译过程执行过程许多概念进程 heap stack 程序开发过程 开发 编辑 编译 出错 链接 执行 结果正确 结束 源程序file cpp 目标程序file obj 库函数和其它OBJ 可执行程序file exe Yes Yes No No Build过程 compiletime Compile link如何对待错误和警告错误 一定要排除 从第一个错误找起警告 或者排除 或者确实理解不会对程序造成危害学会设置compileoptions和linkoptionsIDE中如何设置 一定要知道 命令行如何设置 程序代码中如何设置 执行过程 runtime Load 重定位 初始化 main如何调试断点assertion程序对环境的依赖性系统环境CRT内存影像 C 语言内容 数据类型内置 built in 标准库 自定义的表达式控制语句函数 模板 异常处理 函数模板 例子 templateTypemin Typea Typeb returna 10 20 函数模板 续 两种编译模式 inclusion模式separation模式 export关键字 模板特化重载函数模板 异常处理 exceptionhandling 错误处理机制 错误代码隔离Throw raise anexceptionThrowexpression类似于return语句Try catch语句 handler try catch type 或catch typeobj 类似于函数调用但是类型匹配发生在runtime 异常处理 续 嵌套机制 如果最外层没有处理 则由terminate来处理Localobject正常析构rethrow在catch子句中仍然可以throwCatchallhandlercatch 声明函数时指定函数可能的异常intfunc int throw string 如果没有指定的异常发生 调用unexpected Object BasedProgramming class实现数据封装对象构造函数与析构函数访问控制 友元嵌套类类中成员初始化虚拟函数类中运算符重载类模板 this指针 在类的内部指向类自身的指针在每个成员函数中 this指针提供了使用上的方便this指针把类的多个实例对象区分开来 模板 函数模板即以数据类型为 参数 的函数例如 templateSwap T 类模板 模板类或类生成器 即以数据类型为 参数 的类例如 templateclassStack private Tpool maxNum intsp public Stack voidPush Tx TPop BOOLIsEmpty const BOOLIsFull const 使用 StackintStack StackfloatStack 模板 续 定义模板实例化模板参数 类型参数 非类型参数两种编译模式 inclusion模式separation模式 export关键字 类模板特化 classtemplatespecializations 类模板部分特化 classtemplatepartialspecializations 从面向过程转换到面向对象 面向过程以功能为组织单元在C语言中以函数作为功能单元 通过数据结构来描述具体的问题 数据在功能 函数 之间以参数的形式被传送 面向对象用类class封装数据以及与数据相关的操作 用类的继承性来实现类的重用性 多态性 Object OrientedProgramming CShapeCPointCLineCCircleCArcCText CShape CPoint CLine CCircle CArc CText 多态性和虚拟函数 多态性是面向对象的一个支柱允许程序在实施对象的操作时 允许对象按不同的方式完成不同类型对象的操作 不同类型对象有自己实现操作的方法 虚拟函数虚拟函数实现了多态性 说明 在函数说明之前加上关键字virtual在基类的说明中 定义虚拟函数 virtualvoidDisplay 调用 CShape pShape GetCurrentShape pShape Display 对象的内存分布图 Vptr指针和vtab表classA private intvalue public virtualvoidFunc1 void virtualvoidFunc2 void 变量偏移量vptr0value4 A Func1A Func2 vtab 对象的内存分布图 续一 classB pulicA private intvalue1 public virtualvoidFunc1 void virtualvoidFunc2 void 变量偏移量vptr0value4value18 B Func1B Func2 vtab 对象的内存分布图 续二 classB pulicA private intvalue1 public virtualvoidFunc1 void 变量偏移量vptr0value4value18 B Func1A Func2 vtab 继承关系 Public继承 is a 关系private继承 has a 关系可以用复合类或者嵌套类来表示protected继承比private继承放宽限制virtual继承单个共享实例虚基类的构造由themostderivedclass完成 类型转换 Static castDynamic cast向下转换voidDraw CShape shape shape DrawRect shape DrawCircle if dynamic cast shape RTTI typeid Static cast类型转换 classB classD publicB voidf B pb D pd D pd2 static cast pb notsafe pbmay pointtojustBB pb2 static cast pd safeconversion Static cast类型转换 续 classB classD publicB voidf B pb D pd1 dynamic cast pb D pd2 static cast pb C 标准库 C标准库iostreamlibrarycin cout cerrostream operator istream os MyClass STL StandardTemplateLibrary GenericProgramming 作者 AlexanderStepanov目标 高效 灵活地实现各种算法思想 对算法进行抽象 与数据表示分开以模板技术为基础函数模板类模板C 的发展使得这种思想得以实现 STL基础 Object BasedProgramming有关class的各种设计技术函数对象 functionobjects 重载了函数调用操作符 的类模板函数模板类模板模板特化 STL思想 数据类型 算法 容器 STL实现 STL容器 顺序容器 SequenceContainer vectordequelist关联容器 AssociativeContainer setmultisetmapmultiset STL迭代器 迭代器 Iterator 是指针 pointer 的泛化 任意访问 双向迭代器 向前迭代器 输入迭代器 输出迭代器 STL算法 改变顺序的操作reverse replace不改变顺序的操作for each find排序及相关操作sort rotate常用的数字操作count sum up 使用STL include include include includeusingnamespacestd templatevoidprint elements Telem cout elem void pfi int print elements voidmain intia 7 0 1 2 3 4 5 6 listilist ia ia 7 以陣列做為list的初值for each ilist begin ilist end pfi 0123456ilist push back 7 ilist push back 0 ilist push back 7 ilist push back 9 for each ilist begin ilist end pfi 01234567079ilist remove if bind2nd modulus 2 去除所有奇數for each ilist begin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中级经济师考试分析试题及答案
- 工程项目进度延误的原因试题及答案
- 2025市政工程施工案例试题及答案
- 2024年工程起重机械项目资金需求报告代可行性研究报告
- 英语高级考试试题及答案
- 教学档案建设与秋季管理计划
- 扶贫助农面试题及答案
- 财务报表分析的重要性计划
- 拍卖品保管责任协议
- 专业约谈协议
- 2025-2030年中国叶黄素行业市场发展现状及竞争格局与投资发展研究报告
- 2024第41届全国中学生物理竞赛预赛试题(含答案)
- 内镜洗消相关试题及答案
- 高效节能泵结构优化-全面剖析
- 中国企业科创力研究报告2024
- 细胞培养技术的基础试题及答案
- (广东二模)2025年广东省高三高考模拟测试(二)历史试卷(含答案)
- GB/T 14601-2025电子特气氨
- 湖北省武汉第二中学2025届高三3月高考模拟考试数学试题试卷
- 培训机构兼职老师聘用协议书范本
- 透析患者贫血的护理查房
评论
0/150
提交评论