根据 C++ 标准,int 变量是对象吗?

Joã*_*nso 6 c++ language-lawyer

您将在下面找到 C++ 标准中对象的定义。

[介绍对象]/1

C++ 程序中的构造创建、销毁、引用、访问和操作对象。一个目的是通过一个定义(6.1)创建的,通过一个 新的表达式(8.3.4),当隐式更改联合的活动成员时 (12.3),或当创建临时对象时 (7.4, 15.2)。一个对象在其构建期间 (15.7)、整个生命周期 (6.8) 和销毁期间 (15.7) 占据一个存储区域。[ 注意:函数不是对象,无论它是否像对象那样占用存储空间。—end note ] 对象的属性是在创建对象时确定的。一个对象可以有一个名称(第 6 条)。对象具有影响其生命周期 (6.8) 的存储持续时间 (6.7)。一个对象有一个类型(6.9)。有些对象是多态的(13.3);该实现生成与每个此类对象相关联的信息,从而可以在程序执行期间确定该对象的类型。对于其他对象,用于访问它们的表达式(第 8 条)。

我有一种感觉,是的,int变量可以被视为 C++ 中的对象,尽管在上面的段落中有这样的声明:

一个对象在其构建期间 (15.7)、整个生命周期 (6.8) 和销毁期间 (15.7) 占据一个存储区域。

标准中还有其他几个声明似乎假定术语对象仅限于类对象。因此,为了精确起见,我发布了这个问题。

Vit*_*meo 6

是的, anint是一个对象

您发布的引用中的所有句子对于int变量都是有效且真实的。

此外,以下是一些示例,说明int您发布的引文有何意义:


对象由定义创建

来自[basic.def]

int a;                          // defines a
Run Code Online (Sandbox Code Playgroud)

暗示那int是一个对象。


一个对象有一个类型

来自[basic.types]

有两种类型:基本类型和复合类型。

int基本类型。这再次表明这int是一个对象。

  • 逻辑谬误?由定义创建的对象并不意味着由定义创建的东西就是一个对象。 (3认同)
  • 同样,具有类型的对象并不能*证明*具有类型的所有东西都是对象。 (2认同)
  • @juanchopanza 但是第二个语句,`有两种类型:基本类型和复合类型。`似乎表明 `int` 是 C++ 中的一个对象。 (2认同)