下面你将在C ++ Standard中找到对象的定义。
C ++程序中的构造创建,销毁,引用,访问和 操纵对象。 对象由定义(6.1)创建,由a创建 new-expression (8.3.4),隐式更改union的活动成员(12.3),或创建临时对象时(7.4,15.2)。 物体在其构造期间占据存储区域 (15.7),在其整个生命周期(6.8)和其期间 毁灭(15.7)。 [注意:无论是什么,函数都不是对象 它是否以对象的方式占据存储空间。 -结束 note]对象的属性是在对象确定时确定的 创建。对象可以有一个名称(第6条)。一个对象有一个存储空间 持续时间(6.7)影响其寿命(6.8)。一个对象有一个 类型(6.9)。有些对象是多态的(13.3);实施 生成与制作它的每个这样的对象相关联的信息 可以在程序执行期间确定该对象的类型。对于 其他对象,其中发现的值的解释是 由用于访问的表达式(第8条)的类型决定 它们。
我有一种感觉,是的,int
变量可以被认为是C ++中的一个对象,尽管上面的段落中有这样的陈述:
物体在其建造期间占据存储区域 (15.7),在其整个生命周期(6.8)和其期间 毁灭(15.7)。
标准中还有其他一些陈述似乎假设术语 object 仅限于类对象。因此,为了精确起见,我发布了这个问题。
答案 0 :(得分:4)
是的,int
是对象。
您发布的报价中的所有句子对int
变量都有效且真实。
此外,以下是一些示例,说明int
对您发布的报价有何意义:
对象由定义
创建
来自[basic.def]:
int a; // defines a
建议int
是一个对象。
对象具有类型
有两种类型:基本类型和复合类型。
int
是fundamental type。这再次表明int
是一个对象。
答案 1 :(得分:0)
即使标准没有列举对象的所有内容,也可以从各个段落中推断出来。来自[basic.types]/1
[basic.types]及其子条款对关于类型表示的实现提出了要求。有两种类型:基本类型和复合类型。类型描述对象,引用或函数。
对象类型是(可能是cv限定的)类型,它不是函数类型,不是引用类型,而不是cv void。
由于int
不是reference type,也不是function type,因此推断int
只能是对象类型,因此声明的变量是对象。< / p>
答案 2 :(得分:0)
根据isocpp.org:
什么是物体?
具有关联语义的存储区域。
在声明int i之后;我们说“ i是int类型的对象。” 在OO / C ++中,“对象”通常表示“类的实例”。因此 类定义了可能有许多对象(实例)的行为。
但是类型int不是对象。选中cppreference.com。
以下实体不是对象:值,引用,函数, 枚举器,类型,非静态类成员,模板,类或函数 模板专业化,名称空间,参数包等等。