OOP(C )_第2章_C 初探:创建和使用对象(最终版)

合集下载

软件资格考试计算机辅助设计师(基础知识、应用技术)合卷(中级)试题及答案指导(2024年)

软件资格考试计算机辅助设计师(基础知识、应用技术)合卷(中级)试题及答案指导(2024年)

2024年软件资格考试计算机辅助设计师(基础知识、应用技术)合卷(中级)模拟试题(答案在后面)一、基础知识(客观选择题,75题,每题1分,共75分)1、在计算机辅助设计(CAD)系统中,用于描述物体形状和位置的数据模型被称为:A. 物理模型B. 几何模型C. 拓扑模型D. 功能模型2、下列哪一项不是计算机辅助制造(CAM)的主要功能?A. 加工路径规划B. 数控编程C. 零件强度分析D. 刀具轨迹仿真3、在面向对象的设计中,以下哪项不是面向对象设计的基本原则?A. 封装B. 继承C. 多态D. 过载4、在软件生命周期中,以下哪个阶段主要关注软件的可行性研究和需求分析?A. 设计阶段B. 开发阶段C. 可行性研究阶段D. 运行维护阶段5、下列关于算法时间复杂度的说法中,正确的是()。

A. 算法的时间复杂度与问题的规模无关B. 算法的时间复杂度是指算法在最坏情况下的时间耗费C. 算法的时间复杂度是指算法在最好情况下的时间耗费D. 算法的时间复杂度与输入数据的初始状态无关6、在数据库设计中,将E-R图转换成关系数据模型的过程属于()。

A. 逻辑设计阶段B. 需求分析阶段C. 概念设计阶段D. 物理设计阶段7、在软件生命周期模型中,螺旋模型结合了瀑布模型与哪种模型的特点?A. 原型模型B. 敏捷模型C. 迭代模型D. 喷泉模型8、下列选项中,不属于软件需求分析阶段任务的是:A. 需求获取B. 需求分析C. 编写需求规格说明书D. 软件设计评审9、在软件开发过程中,以下哪个阶段不属于需求分析阶段?A. 功能需求分析B. 性能需求分析C. 安全需求分析D. 系统集成阶段 10、以下哪种数据库设计范式能确保数据冗余最小,并且数据更新性能最高?A. 第一范式(1NF)B. 第二范式(2NF)C. 第三范式(3NF)D. 第四范式(4NF)11、在数据库设计中,E-R图(实体-关系图)主要用于描述数据库的:A. 逻辑结构B. 物理结构C. 概念结构D. 存储结构12、以下哪个不是面向对象程序设计(OOP)的基本特性?A. 封装B. 继承C. 多态D. 抽象数据类型13、下列关于操作系统的主要功能的描述错误的是?A. 处理器管理B. 存储管理C. 文件管理D. 信息管理14、在数据结构中,队列是一种什么样的线性表?A. 先进先出B. 后进先出C. 按索引访问D. 随机存取15、题目:在软件工程中,下列哪一项不属于软件开发生命周期模型?A. 瀑布模型B. 非线性模型C. 维护阶段D. 需求分析阶段16、题目:下列关于软件测试的说法中,正确的是:A. 软件测试只能发现错误,不能防止错误发生B. 软件测试是软件开发过程中的最后一环C. 软件测试只需关注软件的功能性测试D. 软件测试不需要编写测试用例17、在计算机图形学中,以下哪种算法常用于将三维物体投影到二维平面上?A. 傅里叶变换B. 光线投射算法C. 迪杰斯特拉算法D. 霍夫变换18、下列哪个术语与数据库管理系统(DBMS)中的“数据完整性”概念最相关?A. 数据加密B. 数据恢复C. 事务处理D. 数据冗余19、在数据库系统中,用来描述数据库中全部数据的整体逻辑结构的是:A. 外模式B. 模式C. 内模式D. 存储模式 20、在软件工程中,瀑布模型的主要缺点是:A. 用户容易参与开发B. 缺乏灵活性C. 用户与开发者易于沟通D. 适合于需求频繁变化的项目21、在软件工程中,用于描述软件系统需求规格的文档称为:A. 软件设计文档B. 软件测试计划C. 软件需求规格说明书D. 软件维护记录22、在面向对象设计中,以下哪种设计模式主要用于处理多个对象之间的通信问题?A. 工厂模式B. 单例模式C. 观察者模式D. 策略模式23、在软件生命周期模型中,螺旋模型是在瀑布模型的基础上增加了什么要素?A. 需求分析B. 设计与实现C. 风险分析D. 维护与升级24、下列哪种算法最适合用于对大量数据进行排序,并且对几乎已排序的数据表现良好?A. 冒泡排序B. 快速排序C. 插入排序D. 归并排序25、在软件工程中,瀑布模型通常被描述为一种 ______ 模型。

(精华版)最新国家开放大学电大《管理信息系统》形考网络课作业1-4试题及答案

(精华版)最新国家开放大学电大《管理信息系统》形考网络课作业1-4试题及答案

(精华版)最新国家开放大学电大《管理信息系统》形考网络课作业1-4试题及答案(精华版)最新国家开放大学电大《管理信息系统》形考网络课作业1-4试题及答案100%通过考试说明:2022年秋期电大把该网络课纳入到“国开平台”进行考核,该课程共有4个形考任务,针对该门课程,本人汇总了该科所有的题,形成一个完整的标准题库,并且以后会不断更新,对考生的复习、作业和考试起着非常重要的作用,会给您节省大量的时间。

做考题时,利用本文档中的查找工具,把考题中的关键字输到查找工具的查找内容框内,就可迅速查找到该题答案。

本文库还有其他网核及教学考一体化答案,敬请查看。

课程总成绩=形成性考核某50%+终结性考试某50%形考任务1一、单项选择题(每小题2分,共56分)题目11.以下关于管理信息系统特点的说法,错误的是()选择一项:D.管理信息系统是模型驱动的题目22.下列说法不正确的是()选择一项:B.管理信息系统可以代替人进行决策题目33.一般情况下,可将管理分为三个层次,即高层、中层和基层,其中高层管理属于()选择一项:B.战略级管理题目44.管理活动的高、中、基3个层次分别对应着3种类型的决策过程,即()选择一项:A.非结构化决策、半结构化决策和结构化决策题目55.事务型管理信息系统的主要目的是()选择一项:A.具体业务过程的自动化题目66.ERP的含义是()选择一项:B.企业资源计划题目77.战略级管理属于()选择一项:B.高层管理题目88.控制管理属于()选择一项:A.中层管理题目99.执行层或称作业层的管理属于()选择一项:C.基层管理题目1010.MRPII的含义是()选择一项:A.物料需求计划第二代题目1111.计算机集成制造系统和办公自动化系统的英文缩写分别是()选择一项:C.CIMS、OA题目1212.系统由输入、输出、处理、反馈、控制5要素组成,其中反馈是指()选择一项:C.将输出的一部分信息返回到输入,以供对系统进行控制用题目1313.管理是一项有序化的、经常性的过程,其最重要的职能之一就是()选择一项:D.决策题目1414.信息系统是由硬件、软件、数据库、远程通讯和网络、人员以及过程组成的,其中起主导作用的是()选择一项:C.人员题目1515.信息源中的同一信息可以为多个信息接受者使用,这种特性称为信息的()选择一项:C.共享性题目1616.信息运动的基本形式是()选择一项:A.数据题目1717.系统而可以从多个角度进行分类,按系统与环境的关系可分为()选择一项:A.外部题目1919.信息系统的英文缩写是:()选择一项:A.IM题目2022.比较常见的电子商务模式B2C(或称BtoC)是指()选择一项:B.企业与直接个人消费者间的电子商务题目2121.系统分解的原则包括()。

2024年C++面向对象程序设计教案(含多款)

2024年C++面向对象程序设计教案(含多款)

C++面向对象程序设计教案(含多款)C++面向对象程序设计教案一、教学目标1.理解面向对象程序设计的基本概念,包括类、对象、继承、多态等。

2.掌握C++面向对象程序设计的基本语法和编程技巧。

3.能够运用面向对象的思想进行程序设计,解决实际问题。

二、教学内容1.面向对象程序设计的基本概念(1)类与对象类是对具有相同属性和行为的一组对象的抽象描述。

对象是类的实例,具有类定义的属性和行为。

(2)继承继承是面向对象程序设计的一个重要特性,用于表示类之间的层次关系。

子类可以继承父类的属性和行为,并在此基础上添加新的属性和行为。

(3)多态多态是指同一个操作作用于不同的对象时,可以有不同的解释和行为。

多态分为编译时多态和运行时多态。

2.C++面向对象程序设计的基本语法(1)类的定义与实现类定义包括类名、属性(成员变量)和方法(成员函数)。

类实现包括成员函数的定义。

(2)构造函数与析构函数构造函数用于创建对象时初始化成员变量,析构函数用于对象销毁时释放资源。

(3)继承与派生继承使用关键字class和public、protected、private访问限定符。

派生类可以添加新的成员变量和方法,也可以重写父类的方法。

(4)多态的实现多态可以通过虚函数、抽象类和接口实现。

虚函数使用关键字virtual声明,抽象类包含至少一个纯虚函数,接口是一种特殊的抽象类,只包含纯虚函数。

3.面向对象程序设计实例(1)设计一个简单的银行账户管理系统,包括账户类、储蓄账户类和信用卡账户类。

(2)设计一个图形类库,包括点、线、矩形和圆形等基本图形类。

三、教学方法1.讲授法:讲解面向对象程序设计的基本概念、语法和编程技巧。

2.案例分析法:通过分析实际案例,让学生理解面向对象程序设计的应用。

3.实践法:让学生动手编写代码,加深对面向对象程序设计的理解。

4.讨论法:组织学生讨论面向对象程序设计在实际项目中的应用。

四、教学评价1.课后作业:布置课后作业,检查学生对课堂知识的掌握程度。

程序员(基础知识、应用技术)合卷软件资格考试(初级)试题与参考答案(2025年)

程序员(基础知识、应用技术)合卷软件资格考试(初级)试题与参考答案(2025年)

2025年软件资格考试程序员(基础知识、应用技术)合卷(初级)模拟试题(答案在后面)一、基础知识(客观选择题,75题,每题1分,共75分)1、家长通过编程软件帮助儿童学习编程、科学、艺术等知识。

下列与软件设计相关的说法,错误的是哪一项?( )A. 可以基于孩子的认知特点开发应用程序。

B. 可以通过Web技术搭建平台,提供给多个教学人员使用。

C. 应用程序和平台的使用方式需要简单,以便儿童和家长容易上手。

D. 开发小朋友教育类软件不需要考虑安全性,因为用户是小朋友。

2、某公司开发了一个人脸识别系统的应用程序,该软件依赖于用户的面部特征来验证身份。

下列关于该软件应用说法,不正确的是哪一项?( )A. 需要使用高精度摄像头捕捉清晰的用户面部图像。

B. 应实现算法对图像识别结果的实时处理。

C. 应该通不过加密技术保护用户的面部作出传输和存储保证其隐私。

D. 应用需要定期更新数据库来确保识别的准确性。

3.(单选题)在编程中,数据结构分为多种类型,其中一种是用于存储数据集合,能够表示集合中的关系和层次关系的数据结构。

这种数据结构被称为()A.栈B.链表D.图结构5.在软件开发过程中,以下哪个阶段通常不属于需求分析阶段的工作?A. 需求收集和分析B. 系统设计C. 软件定义D. 可行性研究6.以下哪个符号用于表示类的属性?B. *C. @D. &7、以下哪个关键字用于表示一个函数的返回值类型?A. voidB. intC. floatD. char8、以下哪个关键字用于表示一个函数可以不接受任何参数?A. voidB. intC. floatD. char9、计算机的主要性能指标通常是指内存容量和()。

B、时钟速率C、分辨率D、存储速率 10、在计算机网络中,HTTP是()协议。

A、文件传输B、电子邮件C、超文本传输D、远程登录11、下列哪种数据结构是线性结构?A. 栈B. 树C. 图D. 一个数组12、面向对象程序设计的核心是?A. 函数分解B. 数据抽象C.控制流D. 并发编程13.下列情况下,编译时能发现错误的有?(多选题)A. 变量未初始化B. 忘记写分号C. 函数返回值类型与函数声明不一致D. 使用已释放的内存14.在Java语言中,下列哪一项是不包含在基本数据类型中的?A. 整型C. 字符型D. 布尔型15、计算机网络中,TCP/IP协议分为几层?每层的主要功能是什么?16、什么是数据库的三范式?请简要说明每个范式的内容和作用。

计算机软件技术基础教程(第二版)习题及答案

计算机软件技术基础教程(第二版)习题及答案

第1章习题部分答案1. 操作系统的发展分为那几个阶段?解:操作系统的发展经历了三个阶段:操作系统的酝酿阶段、操作系统的形成阶段、操作系统的理论化和标准化阶段。

2. 计算机软件技术开发系统包括那几个阶段?解:计算机软件开发系统的发展经历了四个阶段:机器语言阶段、汇编语言阶段、高级语言阶段、面向对象语言和可视化语言阶段。

3. 计算机软件技术的主要范畴是什么?解:计算机软件技术的主要范畴包括软件工程技术、程序设计技术、软件工具环境技术、系统软件技术、数据库技术、实时软件技术、网络软件技术、与实际工作相关的软件技术等八个领域的内容。

4. 从软件技术的发展现状来看有哪些值得我们注意的问题?解:从软件技术的发展现状来看有以下几个值得我们注意的问题:1)软件危机2)软件技术标准,软件版权和软件价值评估3)软件技术的基础研究。

1第2章习题部分答案1. 什么是软件危机?软件危机的表现有哪些?解:软件开发技术的进步为能满足发展的要求,在软件开发中遇到的问题找不到解决的方法,问题积累起来形成了尖锐的矛盾,导致了软件危机。

2. 软件危机产生的原因是什么?解:造成软件危机的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的。

1)软件规模越来越大,结构越来越复杂。

2)软件开发管理困难而复杂。

3)软件开发费用不断增加。

4)软件开发技术落后。

5)生产方式落后。

6)开发工具落后,生产率提高缓慢。

3. 常见的软件过程模型有哪些?解:常见的软件过程模型有瀑布模型、增量模型、演化过程模型、敏捷开发4. 如何对软件质量进行评价?解:软件质量的评价主要围绕可维护性、可靠性、可理解性和效率这几个方面进行。

2第3章习题部分答案1. 软件可行性研究的目的是什么?软件可行性研究的任务又是什么?解:软件可行性研究的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。

可行性研究的任务首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把他们清楚地列举出来。

高等教育自学考试自考《管理系统中计算机应用》试卷及解答参考(2024年)

高等教育自学考试自考《管理系统中计算机应用》试卷及解答参考(2024年)

2024年高等教育自学考试自考《管理系统中计算机应用》自测试卷(答案在后面)一、单项选择题(本大题有30小题,每小题1分,共30分)1、计算机网络最基本的功能是:A. 信息资源的共享B. 移动数据传输C. 数据存储D. 网络会议2、在管理信息系统(MIS)中使用的数据库模型不包括:A. 层次模型(Hierarchical Model)B. 关系模型(Relational Model)C. 网络模型(Network Model)D. 字符模型(Character Model)3.在管理信息系统开发过程中,以下哪项不是需求分析阶段的工作?A. 收集并分析信息需求B. 编写需求规格说明书C. 制定系统设计策略D. 进行系统流程图绘制4.在数据库设计中,以下哪个符号用于表示实体之间的联系?A. 矩阵B. 点C. 线段D. 圆圈5、在管理系统中计算机应用中,如果一个计算机系统的输入设备是键盘,那么以下哪个设备不是键盘?A. 鼠标B. 扫描仪C. 摄像头D. 触摸屏6、在管理系统中计算机应用中,以下哪个不是常用的高级语言?A. C++B. JavaC. HTMLD. Python7、下列关于数据库管理系统(DBMS)的描述,不正确的是:A. DBMS可以提高数据的安全性。

B. DBMS可以实现数据的共享和协同处理。

C. DBMS无法进行数据备份和恢复。

D. DBMS可以提高数据的完整性和一致性。

8、在管理系统中,使用面向对象的编程思想可以带来的优势包括:A. 代码复用性高,开发效率提升。

B. 维护和扩展系统更加复杂。

C. 数据访问比较困难,安全性和可靠性差。

D. 系统功能功能单一,难以满足多样的需求。

9、问题:在计算机网络中,典型的网络拓扑结构包含总线型、环形和()。

A. Y型B. H型C. D型D. 星型 10、问题:在管理信息系统开发中,可行性研究分析主要是要确()。

A. 开发目标是否明确B. 技术和资源条件是否具备C. 系统设计方案是否最合理D. 市场需求是否存在11.管理系统中计算机应用的主要目的是什么?• A. 提高工作效率• B. 降低成本• C. 优化决策过程• D. 所有以上选项12.关于数据库管理系统(DBMS),以下哪项描述是不正确的?• A. DBMS可以支持多种数据库模型。

软件资格考试计算机辅助设计师(中级)(基础知识、应用技术)合卷试卷及答案指导

软件资格考试计算机辅助设计师(中级)(基础知识、应用技术)合卷试卷及答案指导

软件资格考试计算机辅助设计师(基础知识、应用技术)合卷(中级)自测试卷(答案在后面)一、基础知识(客观选择题,75题,每题1分,共75分)1、在软件工程中,哪个阶段负责对软件的需求进行分析和定义?A、可行性研究阶段B、需求分析阶段C、系统设计阶段D、编码阶段2、软件开发生命周期(SDLC)中,哪个阶段主要关注软件的可维护性和可扩展性?A、需求分析阶段B、系统设计阶段C、编码阶段D、测试阶段3、题目:以下关于软件工程中“需求分析”阶段的说法,正确的是:A. 需求分析阶段的目的是确定软件系统需要实现哪些功能B. 需求分析阶段不需要与用户进行沟通C. 需求分析阶段完成后,系统设计阶段可以直接使用需求规格说明书D. 需求分析阶段的成果是软件系统的物理设计说明书4、题目:在软件测试中,以下关于“黑盒测试”的说法,错误的是:A. 黑盒测试关注软件的功能,而不关心内部实现细节B. 黑盒测试主要使用等价类划分和边界值分析等测试方法C. 黑盒测试可以完全覆盖软件的所有功能D. 黑盒测试适用于测试软件的可用性、性能等特性5、题目:在软件开发过程中,以下哪个阶段最适宜进行需求分析?A. 设计阶段B. 编码阶段C. 测试阶段D. 需求阶段6、题目:以下哪项不是软件工程的基本原则?A. 可维护性B. 可复用性C. 可移植性D. 可测试性7、以下关于软件开发中面向对象编程(OOP)的特点描述错误的是()A. 封装性B. 继承性C. 多态性D. 通用性8、以下关于软件需求规格说明书(SRS)描述错误的是()A. SRS是软件项目开发过程中非常重要的文档B. SRS应该详细描述系统的功能和非功能需求C. SRS应该包括系统设计、实现和测试等方面的内容D. SRS的编写应该遵循一定的格式和标准9、在面向对象的程序设计中,以下哪个原则体现了“开闭原则”?A. 单一职责原则B. 依赖倒置原则C. 接口隔离原则D. 开闭原则 10、在Java编程语言中,以下哪个关键字用于声明一个静态成员变量?A. staticB. finalC. abstractD. synchronized11、在软件工程中,哪个阶段是确定系统必须做什么的阶段?A. 需求分析阶段B. 系统设计阶段C. 编码阶段D. 测试阶段12、以下哪个不是软件工程中的软件质量属性?A. 可用性B. 可靠性C. 可维护性D. 代码行数13、在面向对象的设计中,以下哪个原则描述了类的接口应该尽可能简单,只包含实现类所需的功能,而不是多余的特性?A. 单一职责原则B. 开放封闭原则C. 里氏替换原则D. 依赖倒置原则14、以下哪个工具通常用于对软件系统进行静态代码分析?A. JUnitB. SeleniumC. SonarQubeD. Postman15、在软件开发过程中,UML(统一建模语言)主要用于哪个阶段?A. 需求分析B. 设计阶段C. 编码阶段D. 测试阶段16、以下哪个工具不属于敏捷开发常用的工具?A. JiraB. ConfluenceC. GitD. Selenium17、在软件开发过程中,下列哪项不属于软件质量属性?A. 可靠性B. 可维护性C. 可用性D. 可行性18、软件需求规格说明书中,以下哪种表述方式最不利于需求理解?A. 使用自然语言描述B. 使用伪代码描述C. 使用图表和表格描述D. 使用数学公式描述19、以下关于面向对象设计原则的说法,错误的是:A. 单一职责原则(SRP)要求一个类只负责一项职责。

OOP_2C++语言基础

OOP_2C++语言基础

29
5.Defining Variables(定义变量)
在C语言函数中,变量的定义和声明必须放在 程序块开始的地方。 而在C++中,变量的定义和声明可以在程序块 的任何地方出现,但必须在首次被使用前出现。
30
可以出现在程序块的 任何地方,但必须在 首次被使用之前
31
在C++中,变量可在for循环中定义,它的作用域 是for循环体。
7
C++中的变量cin (标准输入流)用来处 理标准输入,如键盘输 入。cout(标准输出流) 用来处理标准输出,如 屏幕输出。 提取操作符>>用于 输入,插入操作符<<用 于输出。 这两个操作符都能 分析所处理数据的数据 类型,所以不需要格式 化串。
Manipulators
(操纵符) 输入和输出能被操纵 符格式化。 #include <iostream> 使用带参数的操纵符 #include <iomanip>
C++提供了一套新的输入/输出库替代C语言的输入/输 出库。 C++中将数据的输入/输出看作是一串连续的字节流。 输入流 输出流
HOW ARE YOU?
HOW ARE YOU?
HOW ARE YOU?
C++标准输入输入库的头文件是iostream #include <iostream> //包含头文件
51
2.The main Function
每个C++程序都必须包含一个称为main的主函数。 C++要求任何编译器必须支持如下形式的原型:
返回void不被有 些编译器支持
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Improved support for information hiding
private, protected keywords
Automatic initialization/cleanup(构造和析 构函数)
10
2.7.1 例:Class Stack
// intstack.h: A Stack class for ints class StackOfInt { public: StackOfInt(int); //构造函数,生成对象时自动执行 构造函数, 自动执行 构造函数 生成对象时自动 void push(int); int pop(); int top() const; int size() const; ~StackOfInt(); //析构函数,撤销对象时自动执行 析构函数, 析构函数 private: int *data; int length; int ptr; };
初探:创建和使用对象 第二章 C++初探 创建和使用对象 初探
面向对象程序设计(C++) 面向对象程序设计
2.1 概述
This chapter explains key differences between C and C++, and takes you through three essential C++ features:
18
for (int i = 0; i < N; ++i) stk.push(i + 0.5); while (stk.size() > 0) cout << stk.pop() << ' '; cout << endl; } 输出:4.5 3.5 2.5 1.5 0.5 输出:
19
2.9 小结 A First Look at C++ 小结: C++ emphasizes type safety IOStreams provide type-safe I/O new and delete provide safe heap(堆) 堆 management Classes are like structs
const integers can be used as array dimensions
常量在C++中通常是一个符号表中的条目;而在C中是一个变量。 中通常是一个符号表中的条目;而在 中是一个变量 中是一个变量。 常量在 中通常是一个符号表中的条目
Structure tags are type names
13
// tintstack.cpp: Tests StackOfInt #include "intstack.h" #include <iostream> using namespace std; int main() { const int N = 5; StackOfInt stk(N); for (int i = 0; i < N; ++i) stk.push(i); while (stk.size() > 0) cout << stk.pop() << ' '; cout << endl; }
11
// intstack.cpp #include "intstack.h" StackOfInt::StackOfInt(int stk_size) { data = new int[length = stk_size]; ptr = 0; }; void StackOfInt::push(int x) { if (ptr < length) data[ptr++] = x; else throw "overflow"; } int StackOfInt::pop() { if (ptr > 0) return data[--ptr]; else throw "underflow"; }
Hello, world
7
• cout是一个预定义的对象; cout是一个预定义的对象 是一个预定义的对象; • cout<<“Hello,world 等价于: cout<< Hello,world” 等价于: Hello,world cout.operator<<(“Hello,world Hello,world”) cout.operator<<( Hello,world ) • C++的输入输出是类型安全的输入输出. (取代printf) C++的输入输出是类型安全的输入输出 (取代 的输入输出是类型安全的输入输出. 取代printf)
16
template<class T> Stack<T>::Stack(int stk_size) { data = new T[length = stk_size]; ptr = 0; }; … template<class T> void Stack<T>::push(T x) { if (ptr < length) data[ptr++] = x; else throw "overflow"; } template<class T> T Stack<T>::pop() { if (ptr > 0) return data[--ptr]; else throw "underflow"; }
Later Binding (晚绑定 晚绑定) 晚绑定
Overloading (重载 重载) 重载 -- 允许函数名和运算符重载 Template (模板 模板) 模板
6
2.5 C++的输入输出 的输入输出:IOStreams初探 的输入输出 初探
// hello.cpp #include <iostream> using namespace std; int main() { cout << "Hello, world" << endl; }
21
输出:4 3 2 1 0 输出:
14
2.8 Templates(模板:参数化的类) 模板:参数化的类 模板 Support generic programming Ideal for containers Logic is independent from contained objects You write the template code once Compiler generates versions on demand
2
2.1 概述 概述(cont.)
History Changes to C subset IOStreams new and delete Objects Templates
3
2.2 C++的历史 的历史
Bjarne Stroustrup, Bell Labs (1980s) C with Classes
Motivated mostly by type safety 'a' is char, not int (@c) "a" is const char*, not char* (@c) f() is the same as f(void)
而在C中等同于参数个数不确定的函数 而在 中等同于参数个数不确定的函数
17
template<class T> T Stack<T>::top() const { if (ptr > 0) return data[ptr-1]; else throw "underflow"; } … // tstack9b.cpp: Tests the Stack template #include "stack9b.h" #include <iostream> using namespace std; int main() { const int N = 5; Stack<float> stk(N);
Type safety (类型安全性 类型安全性) 类型安全性 Classes (类:抽象、封装、多态性等 类 抽象、封装、多态性等) Templates (模板) (模板 模板)
Also covered are IOStreams and the free store operators new and delete.
12
// (intstack.cpp continued) int StackOfInt::top() const { if (ptr > 0) return data[ptr-1]; else throw "underflow"; } int StackOfInt::size() const { return ptr; } StackOfInt::~StackOfInt() { delete [] data; }
15
例:通用栈模板
// stack9b.h: A Stack template template<class T> class Stack { public: Stack(int); void push(T); T pop(); T top() const; int size() const; ~Stack(); private: T *data; int length; int ptr; };
8
2.6 new and delete 运算符
相关文档
最新文档