随笔分类 - C++语言程序设计基础 笔记 学堂在线
摘要:标准异常类的继承关系 C++标准库各种异常类所代表的异常 标准异常类的基础 exception:标准程序库异常类的公共基类 logic_error表示可以在程序中被预先检测到的异常 如果小心地编写程序,这类异常能够避免 runtime_error表示难以被预先检测的异常
阅读全文
摘要:自动的析构找到一个匹配的catch异常处理后 初始化异常参数。 将从对应的try块开始到异常被抛掷处之间构造(且尚未析构)的所有自动对象进行析构。 从最后一个catch处理之后开始恢复执行。
阅读全文
摘要:异常处理的基本思想 异常处理的语法 异常接口声明 一个函数显式声明可能抛出的异常,有利于函数的调用者为异常处理做好准备 可以在函数的声明中列出这个函数可能抛掷的所有异常类型。 例如:void fun() throw(A,B,C,D); 若无异常接口声明,则此函数可以抛掷任何类型的异常。 不抛掷任何类
阅读全文
摘要:两个重要的输入/输出流 一个iostream对象可以是数据的源或目的。 两个重要的I/O流类都是从iostream派生的,它们是fstream和stringstream。这些类继承了前面描述的istream和ostream类的功能。 fstream类 fstream类支持磁盘文件输入和输出。 如果需
阅读全文
摘要:1输入流概述重要的输入流类 istream类最适合用于顺序文本模式输入。cin是其实例。 ifstream类支持磁盘文件输入。 istringstream 构造输入流对象 如果在构造函数中指定一个文件名,在构造该对象时该文件便自动打开。 ifstream myFile("filename"); 在调
阅读全文
摘要:1输出流概述 最重要的三个输出流 ostream ofstream ostringstream 预先定义的输出流对象cout 标准输出cerr 标准错误输出,没有缓冲,发送给它的内容立即被输出。clog 类似于cerr,但是有缓冲,缓冲区满时被输出。 构造输出流对象 ofstream类支持磁盘文件输
阅读全文
摘要:程序与外界环境的信息交换 当程序与外界环境进行信息交换时,存在着两个对象:程序中的对象、文件对象。 流是一种抽象,负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流动。 流对象与文件操作 程序建立一个流对象 指定这个流对象与某个文件对象建立连接 程序操作流对象 流对象通过文件系统对所连接的
阅读全文
摘要:STL算法本身是一种函数模版 通过迭代器获得输入数据 通过函数对象对数据进行处理 通过迭代器将结果输出STL算法是通用的,独立于具体的数据类型、容器类型 STL算法分类 不可变序列算法 可变序列算法 排序和搜索算法 数值算法 不可变序列算法 不直接修改所操作的容器内容的算法 用于查找指定元素、比较两
阅读全文
摘要:1函数对象一个行为类似函数的对象可以没有参数,也可以带有若干参数其功能是获取一个值,或者改变操作的状态。 例 普通函数就是函数对象 重载了“()”运算符的类的实例是函数对象 函数对象概念图 使用两种方式定义表示乘法的函数对象 通过定义普通函数(例10-13) 通过重载类的“()”运算符(例10-14
阅读全文
摘要:1关联容器分类和基本功能 关联容器的特点和接口关联容器的特点 每个关联容器都有一个键(key) 可以根据键高效地查找元素接口 插入:insert 删除:erase 查找:find 定界:lowerbound、upperbound、equal_range 计数:count 四种关联容器 单重关联容器(
阅读全文
摘要:顺序容器 向量(vector) 双端队列(deque) 列表(list) 单向链表(forward_list) (以上四种在逻辑上可看作是一个长度可扩展的数组) 数组(array) 元素线性排列,可以随时在指定位置插入元素和删除元素。 必须符合Assignable这一概念(即具有公有的拷贝构造函数并
阅读全文
摘要:容器类是容纳、包含一组元素或元素集合的对象。基于容器中元素的组织方式:顺序容器、关联容器按照与容器所关联的迭代器类型划分:可逆容器、随机访问容器 容器的基本功能与分类顺序容器 array(数组)、vector(向量)、deque(双端队列)、forward_list(单链表)、list(列表)(有序
阅读全文
摘要:迭代器是算法和容器的桥梁 迭代器用作访问容器中的元素 算法不直接操作容器中的数据,而是通过迭代器间接操作算法和容器独立 增加新的算法,无需影响容器的实现 增加新的容器,原有的算法也能适用 输入流迭代器和输出流迭代器输入流迭代器 istream_iterator<T> 以输入流(如cin)为参数构造
阅读全文
摘要:1泛型程序设计的基本概念泛型程序设计: 编写不依赖于具体数据类型的程序 将算法从特定的数据结构中抽象出来,成为通用的 C++的模板为泛型程序设计奠定了关键的基础 术语:概念用来界定具备一定功能的数据类型。例如: 将“可以比大小的所有数据类型(有比较运算符)”这一概念记为Comparable 将“具有
阅读全文
摘要:静态数组是具有固定元素个数的群体,其中的元素可以通过下标直接访问。动态数组由一系列位置连续的,任意数量相同类型的元素组成。vector就是用类模板实现的动态数组。
阅读全文
摘要:线性群体的概念 群体是指由多个数据元素组成的集合体。群体可以分为两个大类:线性群体和非线性群体。 线性群体中的元素按位置排列有序,可以区分为第一个元素、第二个元素等。 非线性群体不用位置顺序来标识元素。 线性群体中的元素次序与其逻辑位置关系是对应的。 在线性群体中,又可按照访问元素的不同方法分为 直
阅读全文
摘要:1函数模板函数模板定义语法 template <模板参数表> 模板参数表的内容 类型参数:class(或typename) 标识符 常量参数:类型说明符 标识符 模板参数:template <参数表> class标识符 2类模板
阅读全文
摘要:多态行为的基础:基类声明虚函数,继承类声明一个函数覆盖该虚函数覆盖要求: 函数签名(signatture)完全一致函数签名包括:函数名 参数列表 const 显式函数覆盖 C++11 引入显式函数覆盖,在编译期而非运行期捕获此类错误。 在虚函数显式重载中运用,编译器会检查基类是否存在一虚拟函数, 与
阅读全文
摘要:纯虚函数 纯虚函数是一个在基类中声明的虚函数,它在该基类中没有定义具体的操作内容,要求各派生类根据实际需要定义自己的版本。 抽象类 带有纯虚函数的类称为抽象类 注意: 抽象类只能作为基类来使用。 不能定义抽象类的对象。
阅读全文
摘要:1虚函数用virtual关键字说明的函数虚函数是实现运行时多态性基础,C++中的虚函数是动态绑定的函数虚函数必须是非静态的成员函数,虚函数经过派生之后,就可以实现运行过程中的多态。一般成员函数可以是虚函数构造函数不能是虚函数,析构函数可以是虚函数 一般虚函数成员: 虚函数声明只能出现在类定义中的函数
阅读全文
浙公网安备 33010602011771号