Skip to Content
C++语言导学(原书第2版)
book

C++语言导学(原书第2版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced
450 pages
5h 35m
Chinese
Pearson
Content preview from C++语言导学(原书第2版)

4.2.2 容器

容器(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对象就可以了。例如: ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

软件开发实践:项目驱动式的Java开发指南

软件开发实践:项目驱动式的Java开发指南

Raoul-Gabriel Urma, Richard Warburton
管理Kubernetes

管理Kubernetes

Brendan Burns, Craig Tracey
Python机器学习案例精解

Python机器学习案例精解

Posts & Telecom Press, Yuxi (Hayden) Liu

Publisher Resources

ISBN: 9787111633280