Переменные являются именованными объектами. Следующее создает объекты, которые не являются переменными
new int // create one int object
std::string() // create one string object
Следующее создает одну переменную массива с именем "foo" и 5 неназванных (под) объектов типа "int"
int foo[5];
Следующее не является переменной в C ++ 03, но стало переменной в C ++ 0x (объявленные ссылки являются переменными в C ++ 0x, подробности см. По ссылке)
extern int &r;
Дает ли переменная имя объекту, т. Е. Являются ли переменные всего лишь механизмом именования для анонимных в противном случае объектов?
Переменные - это объекты (или ссылки соответственно). Список сущностей (3/3
в C ++ 03) C ++ содержит несколько таких is-a отношений. Например, подобъект - это объект, а элемент массива - это объект, а член класса - это объект или функция, или тип, или шаблон, или перечислитель.
Список сущностей в C ++ 0x выглядит для меня немного чище, и в нем нет «переменных», «экземпляров функции» (что это за сущность, даже для меня, никогда не была очевидна), «подобъект» и «элемент массива» больше. Вместо этого он добавил «специализацию шаблонов», которые являются функциями, классами или шаблонами (частичные специализации).
Объектная модель C ++ в 1.8
говорит
Объект может иметь имя (пункт 3).
Так что, если хотите, вы можете сформулировать утверждение как «Имя объекта обозначает объект».