【发布时间】:2026-02-16 02:30:01
【问题描述】:
int x = 12;
12 被称为整数文字,因此不能在 LValue 中使用。
- 编译器如何为文字分配内存?
- 文字的范围是什么?
- 为什么我们不能在其范围内获取带有 &12 的地址?
【问题讨论】:
-
Err,
12根本不是 object,x也不是。你可能想选择一个更好的例子,比如 real 对象。 -
这是一个完整的文字 - 请参阅 skjaidev 的回答。
-
x确实在 C++ 对象模型下命名了一个对象。它由定义创建,具有存储期限,并且具有类型。请参阅 C++11 标准中的 § 1.8 C++ 对象模型。在这个问题中,很明显“对象”一词是在这个意义上使用的,而不是在面向对象编程中的对象意义上。 -
@paxdiablo 相关引用是 §1.8.1 “C++ 程序中的构造创建、销毁、引用、访问和操作对象。对象是存储区域。”
-
@AnishaKaul:
int是一个类型,而不是一个类。在 C 中,没有类这样的东西。在 C++ 中,类类型是使用struct、class或union声明的聚合类型。