August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
“指针”的概念是通用的,因此我们可以指向可放置于内存的任何东西。例如,我们可以使用指向vector的指针,就像使用指向char的指针一样:
注意,当我们delete一个vector时,它的析构函数会被调用。例如:
当在自由空间中创建一个vector时,new运算符:
·首先为vector分配内存。
·然后,调用vector的构造函数来初始化vector;构造函数为vector的元素分配内存,并初始化这些元素。
当删除vector时,delete运算符:
·首先调用vector的析构函数;这个析构函数调用元素的析构函数(如果它们有析构函数),然后释放元素使用的内存。
·然后,释放vector使用的内存。
注意,这个过程是如何完美地递归执行的(见8.5.8节)。如果使用实际的(标准库)vector,我们还可以实现:
这里,delete p调用vector<vector<double>>的析构函数;接着,这个析构函数调用它的vector<double>元素的析构函数,所有东西都被干净利落地清理,不会留下未销毁的对象和泄漏的内存。 ...