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版)

9.7.2 拷贝

编程中总是要创建对象的,也就是说,我们总是要考虑初始化和构造函数。构造函数可能是最重要的类成员:为了编写构造函数,我们必须确定初始化一个对象时应该做什么,以及什么样的值是合法值(不变式是什么)。单纯地考虑初始化工作,会帮助你在设计构造函数时避免错误。

下一个经常要考虑的问题是:我们需要拷贝对象吗?如果可以,如何拷贝呢?

对于Date或Month,答案是:我们显然需要拷贝这两种类型的对象;而这两种类型的对象的拷贝的含义很简单——只要复制所有成员即可。实际上,这正是默认情形。只要你不特别声明,编译器就会正确地做到上述效果。例如,如果你将一个Month对象作为初始化值和赋值运算的右部,编译器就会完成其所有成员的拷贝:

这段代码已经完全按我们的期望工作了。用Date{1978,Month::dec,24}可以创建一个正确的未命名Date对象,你可以用它来做一些适当的工作。例如:

这里对构造函数的使用很像类作为类型的字面值常量。通常,当我们需要定义一个只使用一次的变量或常量时,这是一种很方便的方法。

如果我们需要拷贝操作的含义与默认情况不同,应该怎么做呢?可以定义自己的拷贝函数(参见13.3节),或者将拷贝构造函数和拷贝赋值运算符描述为delete(参见19.2.4节)。

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