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.4.2 调试构造函数和析构函数

在程序的执行过程中,构造函数与析构函数都将在明确的、可预计的时间点上被调用。但是,我们并不总是以显式方式(如vector(2))调用它们,我们在做某些事的时候也会调用这些函数——如声明一个vector对象、以传值方式传递一个vector参数或者用new在自由空间上创建一个vector。这可能会造成人们语法上的混淆,因为不只有一种触发构造函数的语法。我们可以更简单地看待构造函数和析构函数的调用:

·每当类型X的一个对象被构建时,类型X的一个构造函数将被调用。

·每当类型X的一个对象被销毁时,类型X的析构函数将被调用。

每当一个类对象被销毁时,该类的析构函数将被调用;这种情况可能发生在变量的作用域结束时、程序结束时或者delete用于一个指向对象的指针时。每当一个类对象被构建时,该类的一个(恰当的)构造函数将被调用;这种情况可能发生在变量初始化时、用new创建对象(内置类型除外)时,以及拷贝对象时。

但这些情况什么时候会发生?体会它们的一个好办法是向构造函数、赋值操作和析构函数添加打印语句,然后尝试运行程序。例如:

这样,我们对X做的任何事情都会留下踪迹以供学习。例如:

试一试执行这一程序。

试一试

运行这一程序示例并确保你能够弄清结果的含义。如果你这么做了,你就能够明白对象的构造与析构的大致过程。 ...

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