文章分类 - C++ Primer
C++ Primer 5th
Stanley B. Lippman, Josee Lajoie, Barbara E. Moo
摘要:特殊工具与技术 [toc] # 控制内存分配 ## 重载 new 和 delete ```cpp string* sp = new string("string"); // 创建了一个 string 对象 string* arr = new string[10]; // 创建了一个 string 数
阅读全文
摘要:用于大型程序的工具 [toc] 大规模应用程序的特殊要求包括: - 在独立开发的子系统之间协同处理错误的能力 - 使用各种库(可能包含独立开发的库)进行协同开发的能力 - 对比较复杂的应用概念建模的能力 异常处理、命名空间和多重继承的技术能够满足以上要求。 # 异常处理 异常使得我们能够将问题的检测
阅读全文
摘要:标准库特殊设施 specialized library facilities 高级主题部分介绍一些附加特性,分为两类:用于求解大规模问题和适用于特殊问题而非通用问题: - bitset 类和三个新标准库设施(tuple, 正则表达式和随机数),以及IO库中某些不常用的部分(格式控制,未格式化IO和随
阅读全文
摘要:模板与泛型编程 OOP和泛型编程都能处理在编写程序时不知道类型的情况。区别是:OOP能处理类型在程序运行之前都未知的情况;而泛型编程中,在编译时就能获知类型了。 模板是C++泛型编程的基础。一个模板就是一个创建类或函数的蓝图或公式。 使用泛型时,将蓝图转换为特定的类或函数,这种转换发生在编译时。 [
阅读全文
摘要:面向对象程序设计 > 核心思想:数据抽象、继承和动态绑定 # 概述 - 数据抽象:将类的接口与实现分离 - 继承:定义相似的类型并对其相似关系建模 - 动态绑定:在一定程度上忽略相似类型的区别,而以统一的方式使用它们的对象 ```cpp class Quote { public: Quote() =
阅读全文
摘要:操作重载和类型转换 # 基本概念 重载的运算符由关键字 operator 和其后要定义的运算符号共同组成。 重载运算符函数的参数数量与该运算符作用的运算对象数量一样多。 对于二元运算符,左侧运算对象传递给第一个参数,右侧传递给第二个。 除了重载的函数调用运算符 operator() 之外,其他重载运
阅读全文
摘要:拷贝控制 第三部分:类设计者工具 13.拷贝控制 拷贝、赋值、移动和销毁 14.操作重载与类型转换 运算符重载 函数调用运算符 转换运算符(类类型对象的隐式转换机制) 15.面向对象程序设计 继承和动态绑定(可以编写类型无关的代码) 16.模板与泛型编程 函数模板和类模板 可变参数模板、模板类型别名
阅读全文
摘要:动态内存 dynamic memory 动态分配的对象的生存期与它们在哪里创建无关,只有当显式地被释放时才会销毁。 标准库定义了两个智能指针类型来管理动态分配的对象。当一个对象应该被释放时,指向他的智能指针可以确保自动地释放它。 除了静态内存,和栈内存,每个程序还拥有一个内存池,称为自由空间(fre
阅读全文
摘要:关联容器 associative-container 关联容器和顺序容器有着根本的不同:关联容器中的元素是按关键字来保存和访问的。而顺序容器是按他们在容器中的位置来顺序保存和访问的。 因此关联容器不支持顺序容器的位置相关操作,比如 push_front, push_back. 两个主要的关联容器:m
阅读全文
摘要:泛型算法 generic algorithm 查找特定元素,替换或删除一个特定值,重排元素顺序等操作,标准库并未给每个容器都定义成员函数来实现这些操作,而是定义了一组泛型算法,他们实现了一些经典算法的公共借口,如排序和搜索。因为他们可以用于不同类型的元素和多种容器类型,所以他们是泛型的。 大多数算法
阅读全文
摘要:顺序容器 sequential container [toc] # 概述 顺序容器中的元素顺序与加入容器的顺序是相同的。 | 容器类型 | 说明 | | - | - | | vector | 可变大小数组。支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢 | | deque | 双端队列。支
阅读全文
摘要:IO库 IO 类 为了支持不同类型的IO处理,在 istream 和 ostream 之外,标准库还定义了其他一些 IO 类型: | 头文件 | 类型 | | - | - | | iostream | istream, wistream 从流读取数据 | | | ostream, wostream
阅读全文
摘要:类 定义抽象数据类型 使用结构体设计一个抽象数据类型,用于存放书籍的信息,包括ISBN编号、销量、总销售收入,并提供一些操作这些信息的方法,使其能够实现以下功能: Sales_data total; if (read(cin, total)) { Sales_data trans; while (r
阅读全文
摘要:函数 自动对象(automatic object):只存在于块执行期间的对象;当块执行结束后,块中创建的自动对象的值就变成未定义的了 局部静态对象(local static object):在程序执行路径第一次经过对象定义语句时初始化,并且直到程序终止才被销毁;其生命周期贯穿函数调用及之后的时间 分
阅读全文
摘要:语句 try 语句块和异常处理 C++ 中的异常处理: throw 表达式 try-catch 语句块 一套异常类(exception class) throw 表达式 throw 后紧跟一个表达式,表达式的类型就是抛出的异常类型 if (i != j){ throw runtime_error("
阅读全文
摘要:表达式 [toc] ## 优先级 | 运算符 | 功能 | 用法例 | | - | - | - | | :: | 全局作用域 | ::name | | :: | 类作用域 | class::name | | :: | 命名空间作用域 | namespace::name | | | | | | . |
阅读全文
摘要:字符串、向量和数组 除了内置的基本数据类型,C++ 还提供了丰富的抽象数据类型库,最重要的两个是 string 和 vector,前者支持可变长字符串,后者支持可变长集合,还有一种标准库类型是迭代器,它是 string 和 vector 的配套类型,常用于访问 string 和 vector 中的元
阅读全文
摘要:变量和基本类型 基本内置类型 算数类型 (arithmetic type) 整型 字符,整型数,布尔值 浮点型 浮点型 空类型 (void) 不对应具体的值,仅用于特殊场合 当函数不返回任何值时使用空类型作为返回类型 整型值的尺寸大小 整型值在不同机器上所占空间有所差别。C++标准规定的最小尺寸:
阅读全文
摘要:Introduction 输入输出 /* inout.cpp */ #include <iostream> int main() { std::cout << "Enter two numbers:" << std::endl; int v1 = 0, v2 = 0; std::cin >> v1
阅读全文

浙公网安备 33010602011771号