电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PPT文档下载
分享到微信 分享到微博 分享到QQ空间

潘爱民com幻灯片ppt02

  • 资源ID:88154759       资源大小:147.50KB        全文页数:36页
  • 资源格式: PPT        下载积分:25金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要25金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

潘爱民com幻灯片ppt02

C+ Overview,潘爱民 panaiminicst.pku.edu.cn http:/www.icst.pku.edu.cn/CompCourse2003/,内容简介,C+语言基础 Object-Based Programming Object-Oriented Programming STL,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过程:compile time,Compile + link 如何对待错误和警告 错误:一定要排除,从第一个错误找起 警告:或者排除,或者确实理解不会对程序造成危害 学会设置compile options和link options IDE中如何设置? 一定要知道! 命令行如何设置? 程序代码中如何设置?,执行过程:runtime,Load、重定位、初始化、main 如何调试 断点 assertion 程序对环境的依赖性 系统环境 CRT 内存影像,C+语言内容,数据类型 内置(built-in)、标准库、自定义的 表达式 控制语句 函数(模板) 异常处理,函数模板,例子: template Type min(Type a, Type b) return a(10,20);,函数模板(续),两种编译模式: inclusion模式 separation模式(export关键字) 模板特化 重载函数模板,异常处理(exception handling),错误处理机制、错误代码隔离 Throw(raise) an exception Throw expression 类似于return 语句 Try、catch语句(handler) try catch(type) 或 catch(type obj) 类似于函数调用 但是类型匹配发生在runtime,异常处理(续),嵌套机制,如果最外层没有处理,则由terminate来处理 Local object正常析构 rethrow 在catch子句中仍然可以throw Catch all handler catch() 声明函数时指定函数可能的异常 int func(int) throw(string); 如果没有指定的异常发生,调用unexpected(),Object-Based Programming,class实现数据封装 对象 构造函数与析构函数 访问控制、友元 嵌套类 类中成员初始化 虚拟函数 类中运算符重载 类模板,this指针,在类的内部指向类自身的指针 在每个成员函数中,this指针提供了使用上的方便 this指针把类的多个实例对象区分开来,模板,函数模板 即以数据类型为“参数”的函数 例如: template Swap( T ,类模板(模板类或类生成器) 即以数据类型为“参数”的类 例如: template class Stack private : T poolmaxNum; int sp; public: Stack(); void Push(T x); T Pop(); BOOL IsEmpty() const; BOOL IsFull() const; ; 使用: Stack intStack; Stack float Stack;,模板(续),定义模板 实例化 模板参数:类型参数、非类型参数 两种编译模式: inclusion模式 separation模式(export关键字) 类模板特化(class template specializations) 类模板部分特化(class template partial specializations),从面向过程转换到面向对象,面向过程以功能为组织单元 在C语言中以函数作为功能单元; 通过数据结构来描述具体的问题; 数据在功能(函数)之间以参数的形式被传送。 面向对象 用类class封装数据以及与数据相关的操作; 用类的继承性来实现类的重用性; 多态性。,Object-Oriented Programming,CShape CPoint CLine CCircle CArc CText,CShape,CPoint,CLine,CCircle,CArc,CText,多态性和虚拟函数,多态性是面向对象的一个支柱 允许程序在实施对象的操作时,允许对象按不同的方式完成不同类型对象的操作;不同类型对象有自己实现操作的方法。 虚拟函数 虚拟函数实现了多态性。 说明:在函数说明之前加上关键字virtual 在基类的说明中,定义虚拟函数: virtual void Display(); 调用: CShape *pShape = GetCurrentShape(); pShape-Display();,对象的内存分布图,Vptr指针和vtab表 class A private : int value; public: virtual void Func1(void) virtual void Func2(void) ;,变量 偏移量 vptr 0 value 4,A:Func1 A:Func2,vtab,对象的内存分布图(续一),class B : pulic A private : int value1; public: virtual void Func1(void) virtual void Func2(void) ;,变量 偏移量 vptr 0 value 4 value1 8,B:Func1 B:Func2,vtab,对象的内存分布图(续二),class B : pulic A private : int value1; public: virtual void Func1(void) ;,变量 偏移量 vptr 0 value 4 value1 8,B:Func1 A:Func2,vtab,继承关系,Public继承 “is-a”关系 private继承 “has-a”关系 可以用复合类或者嵌套类来表示 protected继承 比private继承放宽限制 virtual继承 单个共享实例 虚基类的构造由the most derived class完成,类型转换,Static_cast Dynamic_cast 向下转换 void Draw(CShape *shape) /shape-DrawRect() /shape-DrawCircle() if (dynamic_cast(shape) RTTI:typeid,Static_cast类型转换,class B . ; class D : public B . ; void f(B* pb, D* pd) D* pd2 = static_cast(pb); / not safe, pb may / point to just B B* pb2 = static_cast(pd); / safe conversion . ,Static_cast类型转换(续),class B . ; class D : public B . ; void f(B* pb) D* pd1 = dynamic_cast(pb); D* pd2 = static_cast(pb); ,C+标准库,C标准库 iostream library cin、cout、cerr ostream& operator (istream& os, MyClass&) STL(Standard Template Library),Generic Programming,作者:Alexander Stepanov 目标:高效、灵活地实现各种算法 思想:对算法进行抽象,与数据表示分开 以模板技术为基础 函数模板 类模板 C+的发展使得这种思想得以实现,STL基础,Object-Based Programming 有关class的各种设计技术 函数对象(function objects) 重载了函数调用操作符()的类 模板 函数模板 类模板 模板特化,STL思想,数据类型,算法,容器,STL实现,STL容器,顺序容器(Sequence Container) vector deque list 关联容器(Associative Container) set multiset map multiset,STL迭代器,迭代器(Iterator)是指针(pointer)的泛化,任意访问,双向迭代器,向前迭代器,输入迭代器,输出迭代器,STL算法,改变顺序的操作 reverse、replace 不改变顺序的操作 for_each、find 排序及相关操作 sort、rotate 常用的数字操作 count、sum_up,使用STL,#include #include #include #include using namespace std; template void print_elements(T elem) cout elem “ “; void (*pfi)(int) = print_elements;,void main() int ia7 = 0,1,2,3,4,5,6; list ilist(ia, ia+7); / 以陣列做為 list 的初值 for_each(ilist.begin(), ilist.end(), pfi); / 0 1 2 3 4 5 6 ilist.push_back(7); ilist.push_back(0); ilist.push_back(7); ilist.push_back(9); for_each(ilist.begin(), ilist.end(), pfi); / 0 1 2 3 4 5 6 7 0 7 9 ilist.remove_if(bind2nd(modulus(), 2); / 去除所有奇數 for_each(ilist.begin(), ilist.end(), pfi); / 0 2 4 6 0 ,C+参考书,“C+ Programming Language” “C+ Primer”(3/e) “Design and Evolution of C+” “Inside the C+ Object Model” “Effective C+”(2/e) “More Effective C+” “Exceptional C+” “C+ Strategies and Tactics” “Generic Programming and the STL” ,

注意事项

本文(潘爱民com幻灯片ppt02)为本站会员(F****n)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.