August 2021
Intermediate to advanced
450 pages
5h 35m
Chinese
容器(container)是包含若干元素的对象。因为Vector类型的对象都是容器,所以我们称类Vector是一种容器类型。如2.3节中的定义,Vector是一种很不错的double容器:它易于理解,建立了一个有用的不变式(参见3.5.2节),提供了带边界检查的访问(参见3.5.1节)并且提供了size()令我们可以遍历其元素。然而,它还是存在一个致命的缺陷:它使用new分配了元素,但从没有释放这些元素。这不是一个好的设计,因为尽管C++定义了一个垃圾回收器的接口(参见5.3节),但并不保证它总是可用的以将未用内存提供给新对象。在某些情况下,你不能使用回收器,而且通常出于逻辑或性能的考虑,你更想使用精确的回收控制。因此,我们需要一种机制以确保构造函数分配的内存一定会被释放,这种机制就叫作析构函数(destructor):
析构函数的命名规则是求补运算符~后接类的名字,它是构造函数的补充。Vector的构造函数使用new运算符从自由存储(也称为堆或动态存储)分配一些内存。析构函数则使用delete[]运算符释放该内存以实现清理。普通delete释放单个对象,delete[]释放数组。
这一切都无须Vector的使用者干预。使用者只需像内置类型的变量那样创建和使用Vector对象就可以了。例如: ...
Read now
Unlock full access