Можно ли сказать что литерал 1 является экземпляром типа int? Я знаю, что число 1 в коде является литералом, но можно ли сказать что это - экземпляр типа int, например когда у нас есть функция foo() и она возвращает 1.
Asked
Active
Viewed 57 times
2
n 1 k z z z
- 1,491
- 6
- 23
1 Answers
3
Если ваш код похож на этот, то литерал исчезает как только попадает в оператор return функции возвращающей int:
int foo() {
// здесь '1' - это литерал
return 1;
}
int main() {
// функция foo имеет тип int
// в этом коде литералов нет, а есть значение типа int
std::cout << foo() << '\n';
}
Stanislav Volodarskiy
- 33,556
-
Спасибо, не могли бы вы уточнить: можно ли сказать, что значение типа int, это - экземпляр типа int? – n 1 k z z z Dec 18 '20 at 16:24
-
1Слова "значение" и "экзепляр" взаимозаменяемы в этом контексте. Вообще значение всегда одно, а экземпляров с одним и тем же значением может быть много. C++ копирует значения при возврате из функции. Скорее всего у нас тут будет одно значение и два экземпляра: один экземпляр внутри функции и один в коде который её вызвал. На практике их смешивают без всякого вреда. – Stanislav Volodarskiy Dec 18 '20 at 16:33
int, но не экземпляр, под которым обычно понимается lvalue. Не более чем imho. – Harry Dec 18 '20 at 17:16