Skip to Content
C++程序设计:原理与实践(基础篇)(原书第2版)
book

C++程序设计:原理与实践(基础篇)(原书第2版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
Pearson
Content preview from C++程序设计:原理与实践(基础篇)(原书第2版)

13.1 简介

为了能够在蓝天中翱翔,一架飞机首先需要在跑道上加速直至它的速度足以摆脱地球的引力。当飞机在跑道上隆隆移动时,它不过就是一辆特别笨重的、丑陋的大卡车;而一旦飞上了天空,它就会立刻变成一种完全不同的优雅的、高效的交通工具——这才是它的真正本领。

在本章中,我们处于“奔跑”的途中,我们的最终目的是学习足够的编程语言特性与编程技术,以便能摆脱直接管理计算机内存所带来的困难和束缚。我们希望达到这样一种境界:我们只需用一些类型进行编程,这些类型就完全具备逻辑需求所希望的特性。为了“抵达那里”,我们首先需要解决很多与裸机访问有关的基本限制,例如:

·一个对象在内存中的大小是固定的。

·一个对象存放在内存中的某一特定位置。

·计算机只为这些对象提供了有限的基本操作(如拷贝一个机器字、将两个字的值相加,等等)。

基本上,这些都属于C++内置类型与操作的限制(从C语言继承而来的硬件上的限制;参见22.2.5节与第27章)。在第12章中,我们已经开始设计vector类型,它能控制对其元素的所有访问,并且提供了一些从用户角度看来(而非从硬件角度看)“很自然”的操作。

本章将着重介绍拷贝这一概念。这是一个重要的技术问题:我们对一个复杂对象的拷贝所希望的语义是什么?拷贝之后主体与副本之间的独立程度如何?有几种拷贝操作?我们如何指定使用哪种拷贝操作?拷贝操作与其他基本操作(例如初始化与清理)之间有什么关系?

当不能使用高层类型(如vector与string)时,我们不可避免地需要讨论如何直接操纵内存。我们将讨论数组和指针以及它们之间的关系、它们的用法和使用中容易犯的错误。这些信息对每一个开始接触C++或C低层编程的人都是十分重要的。

我们在学习的过程中应留意vector类型针对vector对象的特有细节以及C++在低层类型基础上构建高层类型的方法。然而,各种语言中的“高层”类型(string、vector、list、map等)是基于相同的机器原语构建的,反映了本章所讨论问题的不同解法。 ...

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.
Start your free trial

You might also like

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

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

本贾尼 斯特劳斯特鲁普
管理Kubernetes

管理Kubernetes

Brendan Burns, Craig Tracey
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉

Publisher Resources

ISBN: 9787111562252