GOT*_*O 0 3 c++ definition object
有人能指出我在C++中对象的(官方)定义吗?在当前的规范中,单词"object"被使用了几千次,但我似乎无法找到解释对象是什么的部分或引用.
这个基本问题的背景是我最近与另一个用户进行的讨论,他对我是否可以将指向范围枚举类型的变量的指针视为对象指针的问题感到惊讶.据他所说,在C++中每个变量是一个对象,因此也变i的int i = 42;.无论如何,我可以找到其他来源说明C++中的一个对象是一个类的实例(这肯定是我多年前在学校教过的),这与我理解上面的假设相矛盾,即任何变量都是一个对象.或者是否有这种明显矛盾的解释?
引用不是对象.几乎任何其他类型的实例都是.
这是第1.8节中的定义:
C++程序中的构造创建,销毁,引用,访问和操作对象.对象是存储区域.[注意:函数不是对象,无论它是否以对象的方式占用存储. - 结束注释]在需要时,由定义(3.1),新表达式(5.3.4)或实现(12.2)创建对象.创建对象时确定对象的属性.对象可以有一个名称(第3条).对象的存储持续时间(3.7)会影响其生命周期(3.8).对象具有类型(3.9).术语对象类型是指用于创建对象的类型.有些对象是多态的(10.3); 该实现生成与每个这样的对象相关联的信息,使得可以在程序执行期间确定该对象的类型.对于其他对象,其中发现的值的解释由用于访问它们的表达式(第5条)的类型确定.
更有用的是3.9p8 中对象类型的定义:
对象类型是(可能是cv-quali fi ed)类型,它不是函数类型,不是引用类型,也不是void类型.
函数具有函数类型,但它们不是实例,并且从不存在实例void.
要处理你的特定辩论,你需要从3.9.2p3开始定义对象指针:
类型的指针的
void或指向对象类型被称为对象指针类型.
事实证明,对象的定义从不重要,只有对象类型的定义.指向范围枚举的指针当然是一个对象指针(它本身也是一个对象).
您会发现标准使用短语class object,这意味着限制类,结构或联合类型的实例.
| 归档时间: |
|
| 查看次数: |
378 次 |
| 最近记录: |