范围enum(Scoped enum) 枚举使我们可以将一组整型常量组合在一起。与类一样,每个枚举定义一个新类型。枚举是文本类型。C++有两种枚举:范围和非范围。新标准引入了...
noexcept异常标识符 在新标准下,函数可以通过提供noexcept标识符来指定它不会抛出异常。函数参数列表后面的关键字noexcept表示该函数不会抛出: 上述代码中r...
标准库tuple类模版 tuple是一个与pair相似的模版。每个pair类型的成员都有不同的类型,但每个pair总是只有两个成员。tuple也具有不同类型的成员,但是tup...
将模板类型参数声明为友元 新标准下,我们可以将模板类型参数设为友元: 这里我们说,无论使用什么类型来实例化Bar,这个类型都是一个友元。因此,对于某个名为Foo的类型,Foo...
虚函数的override说明符 派生类经常(但不总是)重写它们继承的虚函数。如果派生类没有重写其基类中的虚函数,那么与任何其他成员一样,派生类继承其基类中定义的版本。派生类可...
function类模版 function是一个模版。与我们使用的其他模版一样,当我们创建一个function类型时我们必须指定额外的信息。在这种情况下,该信息是该特定func...
对拷贝控制成员使用= default 我们可以通过将拷贝控制成员定义为= default,显示地要求编译器生成它们的合成版本: 当我们在类体内的成员声明中指定= defaul...
智能指针 为了使管理动态内存更容易、更安全,新标准库提供了两种管理动态对象的智能指针类型。智能指针的作用类似于常规指针,但格外重要的是它会自动删除它指向的对象。新标准库定义了...
关联容器的初始化列表 当我们定义一个map时,我们必须指出键和值类型;当我们定义一个set时,我们只指定一个键类型,因为没有值类型。每个关联容器都定义了一个默认构造函数,该构...
lambda表达式 lambda表达式表示可调用的代码单元。它可以被认为是一个未命名的内联函数。与任何函数一样,lambda具有返回类型,参数列表和函数体。 与函数不同,la...
forward_list和array容器 新标准添加了forward_list和array容器。array容器是内置数组的一种更安全更易于使用的替代方法。与内置数组一样,标准...
使用fstream代替iostream& 我们可以在需要原始类型的对象的地方使用继承类型的对象。这一事实意味着可以代表相应的fstream(或sstream)类型调用被编写以...
使用 = default 生成默认构造函数 在新标准下,如果我们想要一个默认构造函数,我们可以在参数列表的后面添加= default来要求编译器为我们自动生成一个默认构造函数...
标准库类initializer_list 新标准下,我们在编写一个接受单个类型的未知数量的参数的函数时,可以使用initializer_list参数作为函数的参数。initi...
除法舍入规则 对于模数运算符,如果m和n是整数且n非零,则(m / n) * n + m % n等于m。这也暗示着如果m % n非零,则它具有与m相同的符号。早期版本的语言允...
使用auto或decltype作为类型缩写 此处line.size()返回一个string::size_type类型的数值。string::size_type类型是strin...
列表初始化(List Initialization) 当初始化列表与内置类型的变量一起使用时,这种初始化形式具有一个重要属性:如果初始化器可能导致信息丢失,编译器将不允许我们...
强制升级机制 使用某些软件时经常遇到“发现新版本,马上升级”的提示。对于一些程序,可以选择忽略提示,不进行升级。但有时,程序只给用户提供升级按钮,无法选择忽略提示的升级信息,...
本系列笔记所记述的books项目设计并实现了程序自动升级功能,因此需要从网络上下载升级EXE文件,这涉及网络下载的相关功能。 信号和槽函数 针对网络方面的编程,Qt中只用几行...