apl01.C++的变迁

上传人:ni****g 文档编号:570438413 上传时间:2024-08-04 格式:PPT 页数:60 大小:298.50KB
返回 下载 相关 举报
apl01.C++的变迁_第1页
第1页 / 共60页
apl01.C++的变迁_第2页
第2页 / 共60页
apl01.C++的变迁_第3页
第3页 / 共60页
apl01.C++的变迁_第4页
第4页 / 共60页
apl01.C++的变迁_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《apl01.C++的变迁》由会员分享,可在线阅读,更多相关《apl01.C++的变迁(60页珍藏版)》请在金锄头文库上搜索。

1、谭火彬谭火彬C+高级语言程序设计-21 1关于课程关于课程y课程名称课程名称高级语言程序设计高级语言程序设计 (2)C+面向对象的编程面向对象的编程y课时:课时:36+18y课程目标课程目标了解了解面向对象面向对象的基础理论的基础理论充分掌握充分掌握C+面向对象的编程机制面向对象的编程机制利用利用C+编写面向对象的程序编写面向对象的程序初步了解初步了解GUI编程编程机制机制北京航空航天大学软件学院北京航空航天大学软件学院2 2thbin课程资源课程资源y教师教师办公室:办公室:6#325办公电话:办公电话:82317048-802手机手机: 13552755185Email: y助教助教朱丹朱

2、丹手机手机: 15652109906Email: 许家俊许家俊手机手机: 13520936008Email: 北京航空航天大学软件学院北京航空航天大学软件学院3 3thbin课程内容课程内容-讲课内容讲课内容yC+的变迁的变迁y类和对象类和对象(9、10)y运算符重载运算符重载(11)y继承继承(12)y多态多态(13)y模板模板(14)y流流(15、17)y异常处理异常处理(16)yGUI程序设计程序设计北京航空航天大学软件学院北京航空航天大学软件学院4 4thbin课程内容课程内容-上机内容上机内容y基本要求基本要求一个完整的小项目,分多次完成一个完整的小项目,分多次完成y主要内容主要内容

3、类的构造函数和析构函数类的构造函数和析构函数运算符重载机制运算符重载机制完成类的继承机制完成类的继承机制利用虚函数实现多态机制利用虚函数实现多态机制应用标准模板库应用标准模板库C+流技术流技术异常处理机制异常处理机制了解了解GUI编程机制编程机制北京航空航天大学软件学院北京航空航天大学软件学院5 5thbin关于免上机练习关于免上机练习y已有已有C+面向对象程序设计基础可申请免面向对象程序设计基础可申请免交上机作业交上机作业y申请免上机练习的基本要求申请免上机练习的基本要求提交一个自己编写的完整提交一个自己编写的完整C+程序程序至少以下至少以下C+特性之一:继承、多态、特性之一:继承、多态、

4、、模板、模板、流、异常处理流、异常处理提交有关程序讲解的提交有关程序讲解的ppt截止日期:截止日期:2011-3-25,邮箱:,邮箱: y免上机同学的上机成绩将根据提交的程序免上机同学的上机成绩将根据提交的程序和和ppt情况定位情况定位90100分之间分之间北京航空航天大学软件学院北京航空航天大学软件学院6 6thbin考核方式考核方式y作业成绩作业成绩15%每次课内上机都要求完成指定的作业每次课内上机都要求完成指定的作业取取5个最好成绩的平均值作为平时成绩个最好成绩的平均值作为平时成绩y课堂表现课堂表现5%课堂提问,点名课堂提问,点名上机课抽查上机课抽查y期末考试期末考试80%课程结束后安排

5、期末考试课程结束后安排期末考试北京航空航天大学软件学院北京航空航天大学软件学院7 7thbin参考资料参考资料yC+大学教程(第五版),大学教程(第五版), Harvey M. Deitel, Paul James Deitel, (C+ How to Program, Fifth Edition), 电子工业出版社电子工业出版社yC+ Primer,Stanley B Lippman, Jose Lajoie著,潘爱民,张丽译,中国电力出版社著,潘爱民,张丽译,中国电力出版社yC+语言的设计和演化,语言的设计和演化,Bjarne Stroustrup著著(The Design and Evo

6、lution of C+),裘宗燕译,裘宗燕译,机械工业出版社机械工业出版社y更多的网络资源更多的网络资源MSDN搜索引擎搜索引擎北京航空航天大学软件学院北京航空航天大学软件学院8 8thbin为什么要学程序设计?为什么要学程序设计?y我们学习的是软件工程专业我们学习的是软件工程专业y程序设计是软件工程的基础,是软件程序设计是软件工程的基础,是软件工程的起点和终点工程的起点和终点起点起点软件工程初衷是为了解决程序设计中难以软件工程初衷是为了解决程序设计中难以解决的问题解决的问题没有程序设计的经验,何谈软件工程没有程序设计的经验,何谈软件工程终点终点软件工程最终目标是写出更好用的程序软件工程最终

7、目标是写出更好用的程序北京航空航天大学软件学院北京航空航天大学软件学院9 9thbin如何学程序设计如何学程序设计y原理为纲原理为纲语言复杂的表面都是简单原理的外在表现语言复杂的表面都是简单原理的外在表现y面向应用面向应用书本和课堂只能教会基本原理,写不出自己的程序书本和课堂只能教会基本原理,写不出自己的程序只有面向实际应用,在实践中有目的去学、去用才能只有面向实际应用,在实践中有目的去学、去用才能真正掌握真正掌握y实用为美实用为美写简单实用的程序,而应过分追求复杂、完美写简单实用的程序,而应过分追求复杂、完美y无需背诵无需背诵该记的,用着就记住了;用不着的,背下来也会忘该记的,用着就记住了;

8、用不着的,背下来也会忘y没有绝对没有绝对Match is best!北京航空航天大学软件学院北京航空航天大学软件学院1010thbin做一个成功的开发人员做一个成功的开发人员y以学习外语的方式学习程序设计语言,培养以学习外语的方式学习程序设计语言,培养“语感语感”y耐心好,特别是在调试和学习阶段耐心好,特别是在调试和学习阶段y懂得坚持自己的开发思路,并懂得理解与吸收懂得坚持自己的开发思路,并懂得理解与吸收别人的思想别人的思想y懂得向你周围的人学习,不论是开发能力上的懂得向你周围的人学习,不论是开发能力上的还是开发经验上的还是开发经验上的y比较宽的知识面,并且能够及时补充自己的知比较宽的知识面,

9、并且能够及时补充自己的知识和完善自己的知识结构识和完善自己的知识结构北京航空航天大学软件学院北京航空航天大学软件学院1111thbin给希望从事软件系统开发的新手给希望从事软件系统开发的新手y精通一门语言:精通一门语言:C/C+/Java/C#/y掌握一种开发工具:掌握一种开发工具: Visual C# .NET、 Visual C+、Eclipse、NetBeansy熟悉熟悉“和选定的语言、开发工具相关和选定的语言、开发工具相关”的的平台:平台: .NET、J2EE、MFC y熟悉一种数据库产品:熟悉一种数据库产品: SQL Server、 Oracle、DB2、MySQL、y了解某个行业的

10、业务知识:电信、银行、了解某个行业的业务知识:电信、银行、电力、制造业等(可以工作后再学)电力、制造业等(可以工作后再学)北京航空航天大学软件学院北京航空航天大学软件学院1212thbin第一章 C+的变迁1313内容安排内容安排y程序设计语言的变迁程序设计语言的变迁yC+发展之路发展之路y了解标准了解标准C+y从字符串处理看从字符串处理看C+变迁变迁北京航空航天大学软件学院北京航空航天大学软件学院1414thbin内容安排内容安排y程序设计语言的变迁程序设计语言的变迁yC+发展之路发展之路y了解标准了解标准C+y从字符串处理看从字符串处理看C+变迁变迁北京航空航天大学软件学院北京航空航天大学

11、软件学院1515thbin程序设计语言:人与计算机对话程序设计语言:人与计算机对话y两个说不同母语的人的对话方式:两个说不同母语的人的对话方式:一方学另一方的语言一方学另一方的语言双方都学习一种第三方语言双方都学习一种第三方语言y人与计算机的对话方式:人与计算机的对话方式:计算机学习人的语言:自然语言计算机学习人的语言:自然语言人学习计算机的语言:机器语言人学习计算机的语言:机器语言学习第三方语言:高级程序设计语言学习第三方语言:高级程序设计语言 北京航空航天大学软件学院北京航空航天大学软件学院1616thbin机器语言机器语言y计算计算1+1?101110000100000100000000

12、000001010100000100000000北京航空航天大学软件学院北京航空航天大学软件学院1717thbin汇编语言汇编语言101110000100000100000000000001010010000100000000MOV AX, 1ADD AX, 1北京航空航天大学软件学院北京航空航天大学软件学院1818thbinC语言语言#include main()printf(%dn, 1+1);北京航空航天大学软件学院北京航空航天大学软件学院1919thbinC+语言语言#include main()cout1+1endl;北京航空航天大学软件学院北京航空航天大学软件学院2020thbin

13、标准标准C+语言语言#include main()std:cout1+1endl;北京航空航天大学软件学院北京航空航天大学软件学院2121thbinWindows GUI下的下的C+#include int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) MessageBox(NULL, 2, Hello, MB_OK);return 0;北京航空航天大学软件学院北京航空航天大学软件学院2222thbin托管托管C+using namespace Syst

14、em;void _tmain()Console:WriteLine(1+1);北京航空航天大学软件学院北京航空航天大学软件学院2323thbin高级程序设计语言的发展高级程序设计语言的发展-1y50年代高级语言出现年代高级语言出现1951 Fortran I ,1954 Fortran IIALGOL 58,ALGOL 60COBOL 60y60年代奠基性研究年代奠基性研究编译技术的完善编译技术的完善1967 BASIC1971 PASCALy70年代完善的软件工程工具年代完善的软件工程工具1972 CAda 1975年,美国军方,历时年,美国军方,历时8年年北京航空航天大学软件学院北京航空航

15、天大学软件学院2424thbin高级程序设计语言的发展高级程序设计语言的发展-2y80年代面向对象发展年代面向对象发展1980 Smalltalk-801982-1986 Object Pascal、Objective-C、Object Assemble1985 C+y90年代网络计算语言年代网络计算语言多范型、持久化、多媒体、平台无关多范型、持久化、多媒体、平台无关1996 Javay本本世纪世纪.Net和和C#北京航空航天大学软件学院北京航空航天大学软件学院2525thbin程序设计语言现状程序设计语言现状y语言:语言:高级语言:高级语言: C、C+、Java、C#、Basic、Pasca

16、l脚本语言:脚本语言:PHP、 Python、Ruby (On Rails)、JavaScript、Asp .Net、Perl、y工具:工具:MicrosoftMicrosoft Visual Studio .NET:C#、C+、Basic、Asp .NetOpen Source项目:项目:gcc、Eclipse、NetBeans北京航空航天大学软件学院北京航空航天大学软件学院2626thbin这么多语言,我该学哪个呢?选择语言?选择语言?北京航空航天大学软件学院北京航空航天大学软件学院2727thbin课堂调查课堂调查1. 您所接触过的编程语言2. 您对该语言的认识北京航空航天大学软件学院北

17、京航空航天大学软件学院2828thbin看两组统计数据看两组统计数据(一一)四地区通用编程技术市场需求量对比四地区通用编程技术市场需求量对比 语言语言硅谷硅谷北美北美澳洲澳洲中国中国C/C+45.8%33.5%20.4%34.2%Java34.3%34.4%34.1%36.8%.Net11.9%29.1%43.6%27.5%Python8.0%2.1%1.9%1.5%1. 来自来自CSDN 2008年的统计数据年的统计数据2. 未考虑未考虑Perl、Delphi等其他通用语言和工具等其他通用语言和工具讨论:您对这组数据的体会!北京航空航天大学软件学院北京航空航天大学软件学院2929thbin看

18、两组统计数据看两组统计数据(二二)四地区四地区Web服务端技术市场需求量对比服务端技术市场需求量对比Web技术技术硅谷硅谷北美北美澳洲澳洲中国中国Java57.5%50.4%33.0%34.4%ASP .Net9.0%29.4%44.7%21.4%PHP25.0%15.6%19.3%43.3%Ruby8.4%4.6%3.0%0.9%1. 来自来自CSDN 2008年的统计数据年的统计数据北京航空航天大学软件学院北京航空航天大学软件学院3030thbin再看一组编程语言排名:再看一组编程语言排名:TIOBEPositionFeb 2011PositionFeb 2001Programming L

19、anguageRatingsFeb 2011Delta Feb 20109Status11Java18.48%1.13%A22C14.99%-1.62%A34C+8.19%-1.26%A47Python7.04%2.72%A53PHP6.97%-3.03%A66C#6.81%1.79%A75(Visual) Basic4.92%-2.13%A812Objective-C2.57%0.79%A910JavaScript2.56%-0.08%A108Perl1.91%-1.69%A1111Ruby1.62%-0.82%A12-Assembly1.27%-A-1. 来自来自TIOBE Program

20、ming Community (http:/ M. Ritchie)B语言、语言、Unix操作系统、操作系统、C语言语言60年代末、年代末、70年代初年代初yC with class70年代末、年代末、80年代初年代初yC+语言语言(Bjarne Stroustrup)80年代年代yISO C+:标准:标准C+1998年正式发布年正式发布The C+ Standard Library最新的标准最新的标准C+ 0x版本即将发布版本即将发布北京航空航天大学软件学院北京航空航天大学软件学院3535thbin标准标准C+发展背景发展背景y在在1985到到1989期间,期间,C+经历了很大的变革经历了很

21、大的变革引入了许多有争议的特征,如保护继承、模板以及多重继承引入了许多有争议的特征,如保护继承、模板以及多重继承y1989年,年,ANSI(the American National Standards Institution)C+标准委员会成立(称为标准委员会成立(称为X3J16,即,即J16)y1991年年International Standardization Organization (ISO)成立技术委员会成立技术委员会JTC1/SC22/WG21,协同,协同X3J16一一起工作,目的是制定出一个既符合起工作,目的是制定出一个既符合ANSI要求,又符合要求,又符合ISO要求的要求的

22、C+标准标准y1998年年9月,月,ISO发布一份长达发布一份长达750页的标准化规格参考页的标准化规格参考手册,这份名为手册,这份名为“Information TechnologyProgramming LanguageC+”,文件编号,文件编号 ISO/IEC 14882-1998北京航空航天大学软件学院北京航空航天大学软件学院3636thbin标准标准C+2.0现状现状yC+0X (即标准即标准C+ 2.0)的草案在的草案在07年年10月完成;月完成;目标是更好地应对多核时代目标是更好地应对多核时代yC+0x的几个重大进展:的几个重大进展:1. 库增强:标准库库增强:标准库TR1和和TR

23、2中的库增强组件中的库增强组件2. 垃圾收集:符合垃圾收集:符合C+0x的编译器必须提供垃圾收集的编译器必须提供垃圾收集器器3. Concept:可简化泛型程序的开发:可简化泛型程序的开发4. 并发内存模型和并发库:使并发内存模型和并发库:使C+能够在多核时代健能够在多核时代健康成长康成长y未被包括在未被包括在C+0x中的重要特征包括:中的重要特征包括:1. 统一的动态加载模型统一的动态加载模型2. 模块模块北京航空航天大学软件学院北京航空航天大学软件学院3737thbinC+开发工具开发工具y用好开发工具可以达到事半功倍用好开发工具可以达到事半功倍y当前可用的工具当前可用的工具Visual

24、Studio (.Net)基于基于gcc编译器的各类共享软件编译器的各类共享软件: Eclipse CDT 、 CodeBlocks、Dev C+.y历史上的开发工具历史上的开发工具Borland C+、C+ BuilderSymantec C/C+Watcom C/C+IBM VisualAge C+Sybase Optima+北京航空航天大学软件学院北京航空航天大学软件学院3838thbin内容安排内容安排y程序设计语言的变迁程序设计语言的变迁yC+发展之路发展之路y了解标准了解标准C+y从字符串处理看从字符串处理看C+变迁变迁北京航空航天大学软件学院北京航空航天大学软件学院3939thb

25、in标准标准C+y标准标准C+完全兼容完全兼容C语言、早期的语言、早期的C+语言语言相同功能的库函数可能在多个版本的相同功能的库函数可能在多个版本的C+存在存在程序设计人员应尽量使用标准程序设计人员应尽量使用标准C+中最中最新的头文件、库函数等内容新的头文件、库函数等内容有时为了兼容旧的有时为了兼容旧的C+编译器,可以在编译器,可以在程序中应用一些预处理指令或其它手段程序中应用一些预处理指令或其它手段北京航空航天大学软件学院北京航空航天大学软件学院4040thbin标准标准C+头文件现状头文件现状y标准标准C+头文件头文件不再使用不再使用.h扩展名,全部在扩展名,全部在std名字空间名字空间如

26、如等,所包含功能和对应旧头文件类似等,所包含功能和对应旧头文件类似y旧的旧的C+头文件名头文件名早期以早期以.h为扩展名的为扩展名的C+头文件,没有名字空间头文件,没有名字空间如如等,但已不在官方标准中等,但已不在官方标准中y标准标准C头文件头文件标准标准C语言所提供的头文件,以语言所提供的头文件,以.h为扩展名为扩展名如如等等y具有具有C库功能的新库功能的新C+头文件头文件无无.h扩展名,文件名以扩展名,文件名以c开头,并全部在名字空间开头,并全部在名字空间std如如与与头文件对应,并提供类似功能头文件对应,并提供类似功能北京航空航天大学软件学院北京航空航天大学软件学院4141thbin标准

27、标准C+新增元素新增元素y名字空间名字空间y新的类型转换操作符新的类型转换操作符ybool数据类型数据类型y运算符关键字运算符关键字y与类相关的新特性与类相关的新特性运行时类型信息运行时类型信息RTTIexplicit构造函数构造函数mutable类成员类成员类成员指针类成员指针.*和和-*virtual基类基类y丰富的模板库丰富的模板库STL北京航空航天大学软件学院北京航空航天大学软件学院4242thbin名字空间名字空间y程序在不同的范围包括许多不同的标识符程序在不同的范围包括许多不同的标识符当不同的范围重叠时,则可能导致问题当不同的范围重叠时,则可能导致问题名字空间污染(名字空间污染(n

28、amespace pollution)y名字空间名字空间(namespace)定义了范围定义了范围将变量和标识符名字空间里面将变量和标识符名字空间里面namespacenamespace namespace_name members members 通过通过“名字空间名字空间名字空间名字空间: :成员名成员名成员名成员名”的方式访问的方式访问namespace_name:member未命名的名字空间是全局未命名的名字空间是全局名字空间可以嵌套名字空间可以嵌套北京航空航天大学软件学院北京航空航天大学软件学院4343thbinusing关键字关键字yusing关键字关键字语法:语法:using n

29、amespace namespace_name;作用:在该名字空间里面的成员可以直接访问,而不作用:在该名字空间里面的成员可以直接访问,而不需要使用需要使用namespace_name:范例:范例:using namespace std;直接访问名字空间直接访问名字空间std所有标识符,而不需要所有标识符,而不需要前缀前缀stdusing std:cout仅开放名字空间仅开放名字空间std中的中的cout标识符,直接使用标识符,直接使用cout来代替来代替std:cout若想使用若想使用std中的中的cin,则必须,则必须std:cin北京航空航天大学软件学院北京航空航天大学软件学院4444t

30、hbin新的类型转换操作符新的类型转换操作符y标准标准C+中引入中引入4个强制类型转换运个强制类型转换运算符算符static_cast:标准转换及其逆转换:标准转换及其逆转换void*转换为转换为char*、int转换为转换为floatconst_cast:转换:转换const或或volatile,将转,将转换掉将转换掉表达式的常量性换掉将转换掉表达式的常量性reinterpret_cast:非标准强制转换:非标准强制转换如如void*转换为转换为int、double转换为转换为intdynamic_cast:进行类对象间的转换:进行类对象间的转换北京航空航天大学软件学院北京航空航天大学软件学

31、院4545thbin旧式强制类型转换旧式强制类型转换语法:语法:语法:语法:/ C+/ C+强制转换符号强制转换符号强制转换符号强制转换符号type_nametype_name ( (exprexpr); );/ C/ C语言强制转换符号语言强制转换符号语言强制转换符号语言强制转换符号( (type_nametype_name) ) exprexpr; ;范例:范例:const char *pc = (const char*) pcom;int ival = (int) 3.14159;extern char *rewrite_str(char* );char *pc2 = rewrite_s

32、tr( (char*) pc );int addr_value = int(&ival );北京航空航天大学软件学院北京航空航天大学软件学院4646thbin显示类型转换显示类型转换范例范例1:int ival; double dval;ival += dval;ival += static_cast( dval );语法:语法:语法:语法:cast_namecast_name (expression(expression) )范例范例2:int x=22, *unsignedPtr;void *voidPtr=&x;unsignedPtr= reinterpret_cast(voidPtr)

33、;北京航空航天大学软件学院北京航空航天大学软件学院4747thbin内容安排内容安排y程序设计语言的变迁程序设计语言的变迁yC+发展之路发展之路y了解标准了解标准C+y从字符串处理看从字符串处理看C+变迁变迁北京航空航天大学软件学院北京航空航天大学软件学院4848thbin范例:字符串处理问题范例:字符串处理问题y有三个头文件中可用于处理字符串有三个头文件中可用于处理字符串:旧的:旧的C头文件头文件:旧:旧C头文件的头文件的std版版:新的标准:新的标准C+头文件头文件#include #include main()char *str1;char *str2=Test ;str1=malloc

34、(5);strcpy(str1,str2);printf(%s, str1);free(str1);#include #include using namespace std;main()char *str1;char *str2=Test ;str1=new char50;strcpy(str1,str2);coutstr1;delete str1;#include #include using namespace std;main()string str1;string str2(Test);str1=str2;coutstr1;北京航空航天大学软件学院北京航空航天大学软件学院4949th

35、bin编程练习编程练习y编写一程序,接受用户输入的一个编写一程序,接受用户输入的一个字符串,并以相反的顺序存储下来,字符串,并以相反的顺序存储下来,之后再输出到控制台之后再输出到控制台y主要难点主要难点如何接受用户输入:命令行参数如何接受用户输入:命令行参数如何存储字符串:字符串的处理如何存储字符串:字符串的处理如何输出到控制台如何输出到控制台北京航空航天大学软件学院北京航空航天大学软件学院5050thbin命令行参数命令行参数y通常,通常,main函数首行为函数首行为int main( ),但其实可带参数但其实可带参数int main(int argc, char* argv);argc:命

36、令行参数的个数,:命令行参数的个数,argv字符型指针数组,其各指针分别指字符型指针数组,其各指针分别指向命令行中命令名和各个参数的字符串向命令行中命令名和各个参数的字符串其中其中argv 0指向命令名字符串,指向命令名字符串,argc的取值为参数个数的取值为参数个数+1北京航空航天大学软件学院北京航空航天大学软件学院5151thbinC语言中的字符串处理语言中的字符串处理yC语言中没有预定义的字符串类型语言中没有预定义的字符串类型字符串被处理为由字符指针指向的、存字符串被处理为由字符指针指向的、存储在字符数组里的字符序列储在字符数组里的字符序列加上了一个空字符加上了一个空字符0,作为字符串,

37、作为字符串的结束标志的结束标志字符串常量被编译程序自动转换成具有字符串常量被编译程序自动转换成具有这种形式的数组,这种数组的开始地址这种形式的数组,这种数组的开始地址被作为字符指针值使用被作为字符指针值使用北京航空航天大学软件学院北京航空航天大学软件学院5252thbinC语言的字符串处理函数语言的字符串处理函数y#include strcpy(char *, const char *)字符串拷贝字符串拷贝strlen(const char *)取字符串长度取字符串长度strcat(char *, const char *)字符串连接字符串连接strcmp(const char *, cons

38、t char *)字符串比较字符串比较strstr(const char *, const char *)在主串中查找指定的子串在主串中查找指定的子串北京航空航天大学软件学院北京航空航天大学软件学院5353thbinC语言中的动态内存分配语言中的动态内存分配y头文件头文件yvoid* malloc(size_t size);向系统申请大小为向系统申请大小为size的内存块,把指向首地址的指的内存块,把指向首地址的指针返回。如果申请不成功,返回针返回。如果申请不成功,返回NULL(一定要检查(一定要检查返回值)返回值)yvoid free(void* block);释放由释放由malloc()申

39、请的内存块。申请的内存块。block是指向此块首地是指向此块首地址的指针(址的指针(malloc()的返回值)的返回值)y关于动态分配的内存关于动态分配的内存在在“堆(堆(heap)”中分配,内容随机中分配,内容随机被被free/delete之前,永久有效之前,永久有效在被在被free/delete之后,该块内存不再属于你之后,该块内存不再属于你北京航空航天大学软件学院北京航空航天大学软件学院5454thbinC程序实现程序实现/*file: inverse.c*/#include #include #include int main(int argc, char *argv)int i,le

40、n;char *str;if (argc!=2) printf(Usage: inverse n);exit(1); len=strlen(argv1);str=(char*)malloc(len+1);for(i=0;ilen;i+) stri=argv1len-i-1;sstri=0;printf(%sn, str);free(str);exit(0);北京航空航天大学软件学院北京航空航天大学软件学院5555thbinC+中的字符串处理中的字符串处理yC+保留了保留了C语言的字符串处理机制和相语言的字符串处理机制和相关的处理函数关的处理函数以以0结束字符序列,头文件仍为结束字符序列,头文件

41、仍为并提供了完全兼容的并提供了完全兼容的头文件,相关头文件,相关函数定义在函数定义在std名字空间名字空间yC+提供新的字符串类,封装字符串处理提供新的字符串类,封装字符串处理字符串为字符串为string类,头文件为类,头文件为,在,在std名字空间名字空间该类直接支持各种字符串操作该类直接支持各种字符串操作北京航空航天大学软件学院北京航空航天大学软件学院5656thbinC+中的动态内存分配中的动态内存分配y提供了动态内存管理的提供了动态内存管理的运算符运算符new分配内存分配内存delete释放内存释放内存newnew语法格式:语法格式:语法格式:语法格式:格式格式格式格式1 1:指针标识

42、符:指针标识符:指针标识符:指针标识符 = new = new 类型标识符类型标识符类型标识符类型标识符; ;格式格式格式格式2 2:指针标识符:指针标识符:指针标识符:指针标识符 = new = new 类型标识符类型标识符类型标识符类型标识符( (初始化值初始化值初始化值初始化值); );格式格式格式格式3 3:指针标识符:指针标识符:指针标识符:指针标识符 = new = new 类型标识符类型标识符类型标识符类型标识符 数组维数数组维数数组维数数组维数; ;deletedelete语法格式:语法格式:语法格式:语法格式:格式格式格式格式1 1:delete delete 指针标识符指针

43、标识符指针标识符指针标识符; ;格式格式格式格式2 2:delete delete 指针标识符指针标识符指针标识符指针标识符; ;北京航空航天大学软件学院北京航空航天大学软件学院5757thbinC+程序实现程序实现-1/*file: inverse.cpp*/#include #include int main(int argc, char *argv)int i,len;char *str; if (argc!=2) coutUsage: inverse n; return 1; len=strlen(argv1);str=new charlen+1;for(i=0;ilen;i+) st

44、ri=argv1len-i-1;stri=0;coutstrn;delete str;return 0;北京航空航天大学软件学院北京航空航天大学软件学院5858thbinC+程序实现程序实现-2/file: inverse.cpp#include #include using namespace std;int main(int argc, char *argv)string str;if (argc!=2) coutUsage: inverse ;return 1;str=argv1;北京航空航天大学软件学院北京航空航天大学软件学院5959thbin请预习请预习y教材第教材第9章:类的深入剖析章:类的深入剖析 (I)从结构到类从结构到类C+中类的定义中类的定义接口和实现分离接口和实现分离使用类的对象使用类的对象构造函数和析构函数构造函数和析构函数北京航空航天大学软件学院北京航空航天大学软件学院6060thbin

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

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

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