2

Можно ли сказать что литерал 1 является экземпляром типа int? Я знаю, что число 1 в коде является литералом, но можно ли сказать что это - экземпляр типа int, например когда у нас есть функция foo() и она возвращает 1.

n 1 k z z z
  • 1,491
  • 6
  • 23
  • 2
    Мне кажется, что нет - в том плане, что адрес этого объекта не существует. Но это явное значение типа int, но не экземпляр, под которым обычно понимается lvalue. Не более чем imho. – Harry Dec 18 '20 at 17:16

1 Answers1

3

Если ваш код похож на этот, то литерал исчезает как только попадает в оператор return функции возвращающей int:

int foo() {
    // здесь '1' - это литерал
    return 1;
}

int main() { // функция foo имеет тип int // в этом коде литералов нет, а есть значение типа int std::cout << foo() << '\n'; }

  • Спасибо, не могли бы вы уточнить: можно ли сказать, что значение типа int, это - экземпляр типа int? – n 1 k z z z Dec 18 '20 at 16:24
  • 1
    Слова "значение" и "экзепляр" взаимозаменяемы в этом контексте. Вообще значение всегда одно, а экземпляров с одним и тем же значением может быть много. C++ копирует значения при возврате из функции. Скорее всего у нас тут будет одно значение и два экземпляра: один экземпляр внутри функции и один в коде который её вызвал. На практике их смешивают без всякого вреда. – Stanislav Volodarskiy Dec 18 '20 at 16:33