C++ 标准 依赖于实现的行为: 很多功能依赖于实现,即每个实现版本都必须定义语法行为并记录行为规范。 例如,char 类型的位数可能因实现而异,导致某些操作依赖于实现。 依赖于实现的功能与硬件系统密切相关。 不确定行为和未定义行为: 不确定行为意味着几种行为都有可能发生,但实现者没有指定具体是哪一种。 未定义行为是指具体实现无法为某一概念指定明…
资源管理 RAII(Resource Acquisition Is Initialization,资源获取即初始化)的核心思想是将资源的生命周期与栈对象的生命周期绑定在一起,通过对象的构造函数来获取资源,在析构函数中释放资源。这样可以确保即使在发生异常的情况下,资源也能被正确地释放,避免资源泄露。 void f(int i, int j) { X*…
标准库 标准库提供的设施可以分为以下几类: 运行时语言支持(例如,对资源分配和运行时类型信息的支持) C 标准库(进行了微小的修改,以便尽量减少与类型系统的冲突) 字符串和 I/O 流(包括对国际字符集和本地化的支持) I/O 流是一个可扩展的输入输出框架,用户可向其中添加自己的流、缓冲策略和字符集。 一个包含容器(如 vector 和 map…
类 具体类 允许 把具体类型的对象置于栈、静态分配的内存或者其他对象 直接引用对象(而非仅仅通过指针或引用) 创建对象后立即进行完整的初始化(比如使用构造函数) 拷贝对象 抽象类 含有纯虚函数的类,称为抽象类 将使用者与类的实现细节完全隔离开 因为我们对抽象类型的表现形式一无所知(甚至对它的大小也不了解),所以必须从自由存储为对象分配空间,然后通过…
初始化器列表(通用) 确保不会发生导致信息丢失的转换(窄化类型转换) int i1 = 7.2 // 变成7,信息丢失,意料之外? int i2 {7.2} // 报错,conversion from 'double' to 'int', possible loss of data int i2 = {7.2} // 报错,并且 = 多余 引入新名…