对象存在与对象生命周期不同吗?

Is object existence distinct from object lifetime?

这听起来可能很有哲理,但事实并非如此:在 C++ 中,各种(classes,标量)对象 是否可以 存在于它们的 一生?一个对象的存在是什么?什么是对象的创建?对象是否在其生命周期开始时创建?

(为清楚起见进行了编辑:问题并非专门针对 class 类型。)

我非常困惑,需要有人向我解释术语和基本概念。

注:存在是存在的事实。这是最基本的哲学概念。它不是对象的属性,我不知道也不关心单词 "exist" 在标准文本中出现的次数。教科书上大概很少会说这些东西"exist"。我不记得曾经读过寄存器中的数字 "exist" 或源代码中的表达式 "exist"。数字适合寄存器,源代码中有表达式。

如果我们可以引用一个对象,就意味着它存在。如果指针指向一个对象,则该对象存在。

C++中的对象是一个抽象概念。对于机器代码,它只是一个大的虚拟字节数组。

物理 "object" 是内存中为某些目的而分配的一堆字节,并且与一些作用于这些字节的函数相关联。该对象的生命周期是这些字节用于该对象的目的的时间,到不再使用它们的时间。它们之后仍然存在,但它们可供其他对象使用。

最好用 [intro.object]/1 来理解:

An object is created by a definition, by a new-expression, when implicitly changing the active member of a union, or when a temporary object is created ([conv.rval], [class.temporary]). An object occupies a region of storage in its period of construction ([class.cdtor]), throughout its lifetime, and in its period of destruction ([class.cdtor]).

那里的第二句话回答了你的问题。如果一个对象能够在描述为 "its lifetime" 的时间段之外占用存储区域(比如在其构建和销毁期间),那么显然对象必须能够 exist在其生命周期之外。