Разве создание объекта — это не то же самое, что начало его существования?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Разве создание объекта — это не то же самое, что начало его существования?

Сообщение Anonymous »

Я всегда предполагал, что «создание объекта» — это то же самое, что «начало его существования» (а не то же самое, что выделение для него памяти).
Но недавно мне сказали, что «создание объекта» означает что-то другое, и что начало существования объекта рекурсивно создает все его подобъекты, даже если оно не начинает их существование, например:
  • При запуске время существования объединения без установки активного элемента, все элементы все равно создаются.
  • Когда время жизни массива начинается без начала времени жизни элементов, например с помощью std::allocator::allocate() или неявно все подобъекты элементов все равно создаются.
Я не могу найти прямого подтверждения этому, но рассмотрим, например. что:
  • Формулировка & говорит о том, что он возвращает адрес объекта, и применение его к неактивному элементу объединения очевидно законно.
  • Формулировка std::allocator::allocate, которая говорит, что он возвращает указатель на первый элемент массива, что, как я полагаю, требует, чтобы он был создан (или был бы нет объекта, на который можно было бы указать).
Правильна ли эта интерпретация? Отличается ли «создание объекта» от «начала его существования»? Если да, есть ли у нас формулировка, которая более явно подтверждает это?

Обратите внимание, что это вопрос языкового юриста. Меня интересует, что об этом говорит стандарт, эта странность в формулировках, скорее всего, не влияет на то, что происходит на практике.

Подробнее здесь: https://stackoverflow.com/questions/798 ... s-lifetime
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»