《C++ Primer》5第五部分学习笔记汇总_高级主题(17章至18章)
《C++ Primer》第五部分学习笔记汇总——高级主题《C++ Primer》第17章学习笔记第17章:用于大型程序的工具——异常处理,命名空间,多重继承与虚继承@学习摘录204:概念——大规模编程对程序设计语言的要求往往比小程序员团队更高。
——1. 更严格的正常运转时间以及更健壮的错误检测和错误处理。
——2. 能够用各种库(可能包含独立开发的库)构造程序。
——3. 能够处理更复杂的应用概念。
第一节:异常处理@学习摘录205:异常处理的作用——通过异常我们能够将问题的检测和问题的解决分离,这样程序的问题检测部分可以不必了解如何处理问题。
@学习摘录206:抛出类型的异常——异常是通过抛出(throw)对象而引发(raise)的。
被选中的处理代码是调用链中与该对象类型匹配且离抛出异常位置最近的那个。
——执行throw的时候,不会执行跟在throw后面的语句,而是将控制从throw转移到匹配的catch.@学习摘录207:被抛出的对象——被抛出的对象将会自动转换为一个指针,不存在数组或函数类型的异常。
——如果抛出一个数组,被抛出的对象转换为指向数组首元素的指针。
——如果抛出一个函数,函数被转换为指向该函数的指针。
@学习摘录208:异常对象——在处理异常的时候,抛出异常的块中的局部存储不存在了。
——因为在处理异常的时候会释放局部存储,所以被抛出的对象就不能再局部存储了,而是用throw表达式初始化一个称为异常对象的特殊对象。
——异常对象将传给对应的catch,并且在完全处理了异常之后撤销。
——当抛出一个表达式的时候,被抛出对象的解态编译时类型将决定异常对象的类型。
@学习摘录209:异常与指针——用抛出表达式抛出静态类型时,比较麻烦的一种情况是,在抛出中对指针解引用。
——抛出指针的时候,必须确定进入处理代码时指针所指向的对象存在。
——如果抛出指向局部对象的指针,而且处理代码在另一函数中,则执行处理代码时指针所指向的对象将不再存在。
——抛出指针通常是个坏主意:抛出指针要求在对应处理代码存在的任意地方存在指针所指向的对象。
@学习摘录210:栈展开——沿嵌套函数调用链接继续向上,直至为异常找到一个catch子句,称之为栈展开(stack unwinding)。
——抛出异常时,将暂停当前函数的妨行,开始查找匹配的catch子句。
——首先检查throw本身是否在try块内部——如果找到匹配的catch,就处理异常——如果找不到,就退出当前函数,并且继续在调用函数中查找。
——如果一个函数声明没有指定异常说明,则该函数可抛出任意类型的异常。
@学习摘录211:栈释放资源——栈展开期间,释放局部对象所用的内存并运行类类型局部对象的析构函数。
——如果一个块直接分配资源,而且在释放资源之前发生异常,在栈展开期间将不会释放该资源。
@学习摘录212:析构函数应该从不抛出异常——在为某个异常进行栈展开的时候,析构函数如果又抛出自己的未经处理的另一个异常,将导致调用标准库terminate函数。
——一般而言,terminate函数将调用abort函数,强制从整个程序非正常退出。
@学习摘录213:异常与构造函数——与析构函数不同,构造函数内部所做的事情经常会抛出异常。
——类似地,在初始化数组或其他容器类型的元素的时候,也可能发生异常,同样,也要保证将会适当地撤销已构造的元素。
@学习摘录214:捕获异常——catch子句(catch clause)中的异常说明符(exception specifier)是在其后跟一个(可选)形参名的类型名。
——说明符的类型必须是内置类型。
——在查找匹配的catch期间,找到的catch不必是与异常最匹配的那个catch,相反,将先中第一个找到的可以处理该异常的catch.@学习摘录215:异常说明符与继承——如果被抛出的异对象是派生类类型的,但由接受基类类型的catch处理,那么,catch不能使用派生类特有的任何成员。
——通常,如果catch子句处理因继承而相关的类型的异常,它就应该将自己的形参定义为引用。
@学习摘录216:重新抛出——有可能单个catch不能完全处理一个异常。
——catch可以通过重新抛出将异常传递给函数调用链中更上层的函数。
——如果在处理代码不活动时碰到空throw,就调用terminate函数。
@学习摘录217:捕获所有异常的处理代码——若不知道可能被抛出的所有异常,可以使用捕获所有异常catch子句(catch-all)的——如果catch(…)与其他catch子句结合使用,它必须是最后一个,否则,任何跟在它后面的catch子句都将不能被匹配。
@学习摘录218:函数测试块与构造函数——为了处理来自构造函数初始化式的异常,必须将构造函数编写为函数测试块(function try block).可以使用函数测试块将一组catch子句与函数联成一个整体。
——构造函数要处理来自构造函数初始化式的异常,唯一的方法是将构造函数编写为函数测试块。
@学习摘录219:auto_ptr对象——auto_ptr和内置指针对待复制和赋值有非常关键的重要区别。
——当复制auto_ptr对象或者将它的值赋给其他auto_ptr对象的时候,将基础对象的所有权从原来的auto_ptr对象转给副本,原来的auto_ptr对象重置为未绑定状态。
@学习摘录220:auto_ptr的缺陷——1. 不要使用auto_ptr对象保存指向静态分配对象的指针。
——2. 永远不要使用两个auto_ptr对象指向同一对象。
——3. 不要使用auto_ptr对象保存指向动态分配数组的指针。
——4. 不要将auto_ptr对象存储在容器中。
第二节:命名空间@学习摘录221:命名空间的定义——命名空间可以在全局作用域或其他作用域内部定义,但不能在函数或类内部定义。
——命名空间名字后面接着由花括号括住的一块声明和定义,可以在命名空间中放入可以出现在全局作用域的任意声明:类、变量、函数、模板以及其它命名空间。
——命名空间作域不能以分号结束。
@学习摘录222:命名是可以是不连续的——与其他作用域不同,命名空间可以在几个部分中定义。
——命名空间由它的分离定义部分的部和构成,命名空间的累积的。
@学习摘录223:全局命名空间(global namespace)——定义在全局作用域的名字(在任意类、函数或命名空间外部声明的名字)是定义在全局命名空间中的。
——全局命名空间是隐式声明的,存在于每个程序中,在全局作用域定义实体的每个文件将那些名字加到全局命名空间。
——可以用作用域操作符引用全局命名空间的成员。
——因为全局命名空间是隐含的,它没有名字,所有记号::member_name引用全局命名空间的成员。
@学习摘录224:未命名的命名空间(unnamed namespace)——未命名的命名空间与其他命名空间不同,未命名的命名空间的定义局部于特定文件,从不跨越多个文本文件。
@学习摘录225:命名空间成员的使用——除了在函数或其他作用域内部,文件不应该包含using指示或using声明@学习摘录226:命名空间别名(namespace alias)——namespace a = b; 此时a 为b 的别名。
@学习摘录227:避免using指示——using指示注入来自一个命名空间的所有名字,它的使用是靠不住的。
——如果应用程序使用许多库,并且用using指示使得这些库中的名字可见,那么,全局命名空间污染问题就会重新出现。
——相对于依赖于using指示,对程序中使用的每个命名空间名字使用using声明更好,这样做减少注入到命名空间中的名字数目,由using声明引起的二义性错误在声明点而不是使用点检测,因此更容易发现和修正。
@学习摘录228:虚继承——在虚继承下,对给定虚基类,无论该类在派生层次中作为虚基类出现多少次,只继承一个共享的基类子对象。
共享的基类子对象称为虚基类。
——class iostream: public virtual ios{…}; class ostream: virtual public ios{…};——无论虚基类出现在继承层次中任何地方,总是在构造非虚基类之前构造虚基类。
《C++ Primer》第18章学习笔记第18章:特殊工具与技术@学习摘录229:operator new 函数和operator delete 函数——0.使用new表达式时实际发生的三个步骤——1. 首先,该表达式调用名为operator new 的标准库函数,分配足够大的原始的未类型化的内存,以保存指定类型的一个对象;——2. 接下来,运行该类型的一个构造函数,用指定初始化式构造对象;——3. 最后,返回指向新分配并构造的对象的指针。
——0.使用delete表达式时实际发生的两个步骤——1. 首先,对指针指向的对象运行适当的析构函数——2. 然后,通过调用名为operator delete 的标准库函数释放该对象所用内存。
摘录有想229:——简洁一点概括一下吧——new -> 分配内存(给指定对象)-> 构造对象-> 返回对象指针——delete -> 指向对象-> 释放内存@学习摘录230:定位new表达式(placement new)——它接受指向已分配但未构造内存的指针,并在该内存中初始化一个对象。
——new(place_address) type; new (place_address)type (initializer-list)@学习摘录231:一个内存分配器基类——预先分配一块原始内存来保存未构造的对象,创建新元素的时候,可以在一个预先分配的对象中构造;释放元素的时候,将它们放回预先分配对象的块中,而不是将内存实际返还给系统。
这称为自由列表(freelist)。
@学习摘录232:volatile限定符——volatile的确切含义与机器相关,只能通过阅读编译器文档来理解。
——使用volatile的程序在移到新的机器或编译器通常必须改变。
——关键字volatile是给编译器的指示,指出对这样的对象不应该执行优化。
C Primer习题集(第5版)
谢谢观看
读书笔记
读书笔记
第一次如此真切的觉得推荐算法是方便人生活的,而不是搭信息茧房。
目录分析
第1章开始
内容简介
第2章变量和基本 类型
第4章表达式
第3章字符串、向 量和数组
第5章语句
第6章函数 第7章类
第8章 IO库 第9章顺序容器
第11章关联容器
第10章泛算法
第12章动态内存
第13章拷贝控制
C++ Primer习题集(第5版)
读书笔记模板
01 思维导图
03 读书笔记 05 作者介绍
目录
02 内容摘要 04 目录分析 06 精彩摘录
思维导图
本书关键字分析思维导图
第版
编程
参考书
指南
模板
第章
拷贝
第版
习题
版 容器
面向对象
习题
设施
程序
向量
类型
标准库
变量
内容摘要
内容摘要
C++ Primer(Fifth Edition)由三位C++大师Stanley B. Lippman、Josée Lajoie和Barbara E. Moo 合作完成,其中文译本《C++ Primer中文版(第5版)》也已出版。与上一版相比,这一版基于C++11标准进行了 全面而彻底的内容更新;既是初学者的最佳指南,也是中高级程序员不可或缺的参考书。本书作为这部久负盛名 的C++经典教程的配套习题解答,提供了C++ Primer(Fifth Edition)中英文版图书中所有习题的参考答案。 本书对使用C++ Primer(Fifth Edition)学习C++程序设计语言的读者来说是一本非常理想的参考书。
C Primer英文版(第5版)
这是本非常经典的C++书籍,系统全面地介绍了C++语言。本书近一千页,可以看成是学习C++的百科全书。 市面上没有哪本其他书籍比本书论述得更广泛,几乎所有的C++知识点本书都有论述而且写得还不错。因为这点, 这本书值得每一位C++程序员拥有。
使语言更为统一,更易于教学
使标准库更简单、安全、使用更高效
使编写高效率的抽象和库变得更简单
因此,在这个版本的C++ Primer中,我们进行了彻底的修改,使用了最新的C++标准。为了了解新标准是如 何全面影响C++语言的,你可以看一下xxiii页至xxv页的新特性列表,其中列出了哪些章节涉及了C++的新特性。
针对C++11而新添加到书中的内容恰到好处地定义了这个新版本。作者在新版本中给出了清晰的阐述,如自 动类型、decltype、列表初始化器、右值引用、move操作符、l11的延展, 正是这本书的价值所在。
C++是一门强大、难学、令人痛苦,但又是如此美妙的编程语言,在工业界和学术界都可以使用,《C++ Primer(第5版)》即针对初学者,也同样适用于有一定编程经验的读者,最新版本配备了C++11最新标准,是 C++粉丝们书架上必备的一本经典著作。
前言
难以计数的程序员已经通过旧版的C++ Primer学会了C++语言。而在这段时间中,C++本身又已成熟了许多: 语言本身的**点和程序设计社区的**点都已大大开阔,已经从主要**机器效率转变为更多地**编程效率。
C++ Primer中文版(第5版)
c + +P r i me r 中文版 ( 第5 版) 》久负盛名的 C + 十经典教
程 ,时隔八年之 久 ,终迎来史 无前例 的重大升级 。除令 全球
无数程序 员从中受益 .甚至为之迷醉的— — c + + 大师 S t a n l e y
B .L i p p m a n的丰富实践经验 , c + +标准委员会原负责人 J o s e e
出 版 社 : 电子 工 业 出版 社
出版 时 间 :2 O 1 3 - 0 9 - 0 1
l S B N-9 7 87 1 21 1 5 5 35 2
5质量技术工作发展的新形势
目前 在我 国经济 不断 深 化转 型 ,社 会 不断 变革 的 情况 下 ,社 会 对于 质量 技 术监 督 工作 的要 求不 断提 高 ,而 质量 技 术监 督 工作 的职 能 也在 不断 深 化 。在此 条件 下 ,我 们要 不 断加 深 对新 科 学技 术 的 了解 ,只有 将计 量 工作 的水 平提 升 到更 高 层次 ,才能 有 力保障 科 学技 术 的不 断发 展和 高新 技 术产 业 的兴 起 ;我 们在 不 断提 升 自身水 平 的 同时 ,也要 对国外质量技术标准的新动向予以实时关注并加以掌握 , 方面 可 以使 我 国企 业 的产 品更 好适 应 国际 贸易 的要 求 ,
速构建健 壮程序 ;采用中文版页码全面呈现原书大量交叉引用 及详尽索引,新式辅学设置 与课后操练用于避开陷阱 巩 固良
法。
内容 ,只有不断完善计量检测技术,不断提高水平 ,与国 际 水平 接 轨 ,才 能够 对 质量监 督 政策 提供 重 要支 撑 ,保 障 质 量监 督的水 平 。
基 础 及 前 沿
中 国 科 技 信 息 2 0 1 3 E  ̄2 0 J ,  ̄ . C H I N A S C I E N C E A N D T E C H N O L O G Y I N F O R M A T I O N O c t . z 0 1 3
《C++ Primer》5第五部分学习笔记汇总_高级主题(17章至18章)
《C++ Primer》第五部分学习笔记汇总——高级主题《C++ Primer》第17章学习笔记第17章:用于大型程序的工具——异常处理,命名空间,多重继承与虚继承@学习摘录204:概念——大规模编程对程序设计语言的要求往往比小程序员团队更高。
——1. 更严格的正常运转时间以及更健壮的错误检测和错误处理。
——2. 能够用各种库(可能包含独立开发的库)构造程序。
——3. 能够处理更复杂的应用概念。
第一节:异常处理@学习摘录205:异常处理的作用——通过异常我们能够将问题的检测和问题的解决分离,这样程序的问题检测部分可以不必了解如何处理问题。
@学习摘录206:抛出类型的异常——异常是通过抛出(throw)对象而引发(raise)的。
被选中的处理代码是调用链中与该对象类型匹配且离抛出异常位置最近的那个。
——执行throw的时候,不会执行跟在throw后面的语句,而是将控制从throw转移到匹配的catch.@学习摘录207:被抛出的对象——被抛出的对象将会自动转换为一个指针,不存在数组或函数类型的异常。
——如果抛出一个数组,被抛出的对象转换为指向数组首元素的指针。
——如果抛出一个函数,函数被转换为指向该函数的指针。
@学习摘录208:异常对象——在处理异常的时候,抛出异常的块中的局部存储不存在了。
——因为在处理异常的时候会释放局部存储,所以被抛出的对象就不能再局部存储了,而是用throw表达式初始化一个称为异常对象的特殊对象。
——异常对象将传给对应的catch,并且在完全处理了异常之后撤销。
——当抛出一个表达式的时候,被抛出对象的解态编译时类型将决定异常对象的类型。
@学习摘录209:异常与指针——用抛出表达式抛出静态类型时,比较麻烦的一种情况是,在抛出中对指针解引用。
——抛出指针的时候,必须确定进入处理代码时指针所指向的对象存在。
——如果抛出指向局部对象的指针,而且处理代码在另一函数中,则执行处理代码时指针所指向的对象将不再存在。
C Primer Plus(第五版)学习笔记
C Primer Plus(第五版)学习笔记第一章概览1.1 C语言的起源记住Dennis Ritchie和Ken Thomson。
是在设计UNIX操作系统的时候开发的。
1.2 使用C语言的理由C是一种融合了控制特性的现代语言,而我们已发现在计算机科学的理论和实践中,控制特性是很重要的。
其设计使得用户可以自然地采用自顶向下的规划、结构化的编程,以及模块化的设计。
这种做法使得编写出的程序更可靠、更易懂。
C是一种高效的语言。
C程序往往很紧凑且运行速度快。
C是一种可移植语言。
由于C与UNIX的紧密联系,UNIX系统通常都带有一个C编译器作为程序包的一部分。
Linux中同样也包括一个C 编译器。
C强大而又灵活(计算机世界中经常使用的两个词)。
C面向编程人员的需要。
它允许您访问硬件,并可以操纵内存中的特定位。
它具有丰富的运算符供选择,让您能够简洁地表达自己的意图。
多数C实现都有一个大型的库,其中包含有用的C函数。
这些函数能够处理编程人员通常会面对的许多需求。
C的简洁性与其丰富的运算符相结合,使其可能会编写出极难理解的代码。
没有谁强迫您编写含糊难懂的代码,但存在这样的可能性。
试问,除C之外还有哪种语言存在一年一度的“含糊代码”(ObfuscatedCode)竞赛呢?1.3 C语言的发展方向不管C++和Java这些较新的语言如何流行,C在软件产业仍然是一种重要的技能,在最想获得的技能中,它一般都列在前10名。
特别是在嵌入式系统的编程中,C已开始流行。
也就是说,它将用来为汽车、照相机、DVD播放器和其他现代化设备中逐渐普及的微处理器编程。
同样,C已开始进入长期以来一直属于FORTRAN的科学编程领域。
最后,由于它是一种适合用来开发操作系统的语言,C在Linux的开发中也扮演着重要的角色。
1.4 计算机工作的基本原理CPU的工作非常简单,至少在我们所做的这一简短描述中是这样的。
它从内存中获取一个指令并执行该指令,然后从内存中获取下一个指令并执行。
《C++Primer》第五版习题答案--第一章【学习笔记】
《C++Primer》第五版习题答案--第⼀章【学习笔记】C++Primer第五版习题解答---第⼀章ps:答案是个⼈在学习过程中书写,可能存在错漏之处,仅作参考。
作者:cosefyDate: 2022/1/7第⼀章:开始练习1.3#include<iostream>int main() {std::cout << "hello, world" << std::endl;return 0;}练习1.4:#include<iostream>int main(){int v1 = 0, v2 = 0;std::cout << "please input two numbers: " << std::endl;std::cin >> v1 >> v2;std::cout << "The product of " << v1 << " and " << v2 << " is: " << v1 * v2 << std::endl;return 0;}练习1.5:#include<iostream>int main(){int v1 = 0, v2 = 0;std::cout << "please input two numbers: " << std::endl;std::cin >> v1 >> v2;std::cout << "The product of ";std::cout << v1;std::cout << " and ";std::cout << v2;std::cout << " is: ";std::cout << v1 * v2;std::cout << std::endl;return 0;}练习1.6:结果如下图所⽰,存在报错,显然格式不合法。
c语言程序设计基础第五版知识点总结
c语言程序设计基础第五版知识点总结C语言程序设计基础第五版知识点总结C语言是一门广泛应用于科学计算、操作系统、嵌入式系统等领域的编程语言。
对于初学者来说,学习C语言是打下编程基础的重要一步。
本文将总结《C语言程序设计基础第五版》中的主要知识点,帮助读者快速掌握C语言的基本概念和编程技巧。
第一章:C程序设计概述本章主要介绍C语言的发展历史、特点以及编程环境的配置。
读者可以了解到C语言的起源以及C语言程序的基本框架。
第二章:C语言基本数据类型(数据类型、变量、常量)C语言中有多种数据类型,包括整型、字符型、实型等。
本章详细介绍了各种数据类型的定义和使用方法,并提供了一些实例演示。
第三章:C语言运算符和表达式运算符是C语言中常用的操作符号,用于完成各种数学和逻辑运算。
本章详细介绍了各种运算符的使用方法和优先级规则,并提供了一些例子进行实践。
第四章:C语言控制结构控制结构是编程语言中用于控制程序流程的语句和机制。
本章介绍了C语言中的顺序结构、选择结构和循环结构,并提供了一些实例演示,帮助读者理解和应用这些结构。
第五章:C语言数组与字符串数组是C语言中常用的一种数据结构,可以存储多个相同类型的数据。
本章详细介绍了数组的定义和使用方法,并提供了一些例子帮助读者熟悉数组的操作。
字符串是由字符组成的一种特殊的数组,本章也介绍了字符串的相关概念和操作方法。
第六章:C语言函数与参数传递函数是C语言中模块化编程的重要组成部分,函数可以将一些操作封装起来,提高代码的可读性和重用性。
本章详细介绍了函数的定义、调用和传递参数的方法,并提供了一些实例帮助读者掌握函数的使用技巧。
第七章:C语言指针指针是C语言中非常重要的概念,通过指针可以实现对内存的直接操作。
本章介绍了指针的定义和使用方法,包括指针的基本操作、指针与数组和函数的关系等。
第八章:C语言结构体、联合与枚举结构体、联合和枚举是C语言中用于组织和管理复杂数据的机制。
本章详细介绍了结构体、联合和枚举的定义和使用方法,并提供了一些实例帮助读者理解和应用这些机制。
chp5
如果派生类中的方法前面带有 new 修饰符,则该方
法被定义为独立于基类中的方法。
如果派生类中的方法前面带有 override 修饰符,则
派生类的对象将调用该方法,而不是调用基类方法。
如果派生类中的方法前面没有 new 或 override 修饰 符,则编译器将发出警告,但该方法将有如存在 new 修饰符一样执行操作。
score1=scorex1; score2=scorex2;
}
向基类构造函数传递参数
在定义派生类构造函数时,向基类构造函数传递参数,必须通过派生类的构造 函数实现,其格式如下:
public 派生类构造函数名(形参列表):base(向基类构造函数传递的实参列表){}
base 是 C#关键字,表示调用基类的有参构造函数。传递给基类构造函数的 “实参列表”通常包含在派生类构造函数 的“形参列表”中。
参见例5_2
构造函数的调用顺序
在创建派生类对象时,调用构造函数的顺序是先调用基类
构造函数,再调用派生类的构造函数,以完成为数据成员 分配内存空间并进行初始化的工作。
例如:
Student_1 s1 = new Student_1();
调用顺序:
先调用基类 Student 的默认构造函数,完成基类数据成员的
抽象类与抽象方法
为了实现多态,必须在基类中声明虚方法。但有时基类中声明
的虚方法无法实现具体的功能。
例如,在计算平面图形面积不可能有具体实现的方法,只有计 算具体某一平面图形的方法。如矩形、圆、三角形的面积可以
计算,而平面图形的面积无法计算, 因为它是抽象的。
抽象方法是指在基类的定义中声明的不包含任何实现代码的方 法。 实际上就是一个不具有任何具体功能的方法,这样的方法 唯一的作用就是让派生类重写。 在基类定义中,只要类体中包含一个抽象方法,该类即为抽象 类。在抽象类中也可以声明一般的虚方法。
Cprimerplus第五版学习笔记
C primer plus 第五版学习笔记C++源代码风格1每行一条语句2每个函数的两个花括号各占一行3函数中的语句都对于花括号进行缩进4与函数名称相关的圆括号周围没有空白(空行将声明语句与程序的其他部分分开,或在变量前声明,C++的做法是尽可能在首次使用变量前声明)。
第二章开始学习C++ 变量名的约定:类型_名称或者是类型(int)名称(Akjl)C语言输入输出是printf,scanf,他们都包含在头文件stdio.h中操作符重载:通过重载,同意个操作符将有不同的含义。
&操作符表示地址操作符又表示AND按位操作符,又如指针* Long | coutMain()//可以将两个关键字分开在两行写 | << //分开写a=b=c=0;// C/C++中可以连续赋值C++程序应当为程序中使用的每个函数提供原型,而库函数在头文件中有声明,而在库文件中有他的定义。
标准C库中提供了140多个预定义函数,而main()函数不是关键字,由于它不是语法的组成头文件Stdlib.h中rand()函数不接受任何参数,并返回一个随机整数,其函数声明如下:int rand(void); 第三章数据处理3.1简单变量内置C++类型有基本类型和复合类型Sizeof操作符能够打印类型或变量长度的单位字节数,如:sizeof(int);sizeof a;//a 为变量头文件climits包含了整型限制信息SCHAR_MAX Signed char最大值 CHAR_BIT Char的位数 ING_MIN Int最小值UCHAR_MAX Unsigned char最大值SCHAR_MIN Signed char最小值 SHRT_MAX Short最大值 LONG_MAX Long最大值 UNIT_MAX Unsigned int最大值CHAR_MAX Char的最大值 SHRT_MIN Short最小值 LONG_MIN Long最小值ULONG_MAX Unsigned long最大值CHAR_MIN Char的最小值 INT_MAX Int最大值 USHRT_MAX Unsigned short最大值 C++的变量的初始化有两种,第一种c语言的:int a=15;第二种是C++的:int a(15);如果不初始化那么变量的值是以前留下的 C99添加了两种类型:long long 和unsigned long long 两种类型都至少是64位的Cout<<hex;//告诉编译器以16进制的方式输出Cout<<bianliang<<oct;//输出完以后切换到8进制的方式输出Cout<<bianliang<<dec//输出完以后切换回10进制Cout<<1982uL;C++打印常量时候,常量后面加L或l表示1982被存为long 型,若是uL或ul表示存为unsigned long型,若是u或U表示存为unsigned int,若无后缀表示存为int。
cap5
5.1.2
面向对象程序设计特点
面向过程的程序设计的缺点
实现了操作的封装,但数据与对数据的操作分离, 实现了操作的封装,但数据与对数据的操作分离,数 据公开,缺乏保护。 据公开,缺乏保护。 以功能为中心,强调功能(过程)抽象。 以功能为中心,强调功能(过程)抽象。程序设计基 于功能分解,而系统功能易变,程序维护困难。 于功能分解,而系统功能易变,程序维护困难。另外数 据与操作分离,也给程序维护带来麻烦,数据表示的改 据与操作分离,也给程序维护带来麻烦, 变可能影响整个系统。 变可能影响整个系统。 功能往往针对某个软件而设计, 功能往往针对某个软件而设计,这使得程序功能难以 复用。 复用。
大学生 高中生
计 算 平均成绩
语文、数学、英语、政治、 高数、英语、计算机、线 语文、数学、英语、政治、 高数、英语、计算机、 物理、化学、 物理、化学、生物 性代数
5.2
类与对象
5.2.1 类定义和类成员的访问控制
5.2.2 对象的创建与使用
5.2.3 对象指针
this指针 5.2.4 this指针
5.1.1
类与对象的概念
面向对象方法中的“ 面向对象方法中的“类”
具有相同属性和行为的一组对象的集合。 具有相同属性和行为的一组对象的集合。 为属于该类的全部对象提供了抽象的描 包括属性和行为两个主要部分。 述,包括属性和行为两个主要部分。 类与对象的关系: 类与对象的关系: 犹如模具与铸件之间的关系, 犹如模具与铸件之间的关系,一个属于 某类的对象称为该类的一个实例。 某类的对象称为该类的一个实例。
鱼类 哺乳 动物 爬行动 物 鸟类
人类
非人类
5.1.2
4.多态性
面向对象程序设计特点
