Отличается ли существование объекта от времени существования объекта? - PullRequest
0 голосов
/ 31 октября 2019

Это может звучать философски, но это не так: в C ++ могут ли различные (классы, скаляры) объекты существовать вне их времени жизни ? Каково существование объекта? Что такое создание объекта? Создан ли объект, когда начинается его время жизни?

(отредактировано для ясности: вопрос не конкретно о типах классов.)

Я очень запутался, и мне нужен кто-то, чтобы объяснить терминологию и основыпонятия для меня.

Примечание: Существование - это факт существования вещи. Это самая фундаментальная философская концепция. Это не атрибут объекта, и я не знаю и меня не волнует количество вхождений слова «существует» в стандартном тексте. Учебники, вероятно, очень редко говорят, что вещи "существуют". Я не помню, чтобы когда-либо читал, что числа «существуют» в регистрах или что выражения «существуют» в исходном коде. Числа помещаются в регистры, и в исходном коде есть выражения.

Если мы можем ссылаться на объект, это означает, что он существует. Если указатель указывает на объект, этот объект существует.

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

Это лучше всего понять с помощью [intro.object] / 1 :

Объект создается по определению с помощью нового выражения при неявном изменении активногочлен объединения или при создании временного объекта ([conv.rval], [class.teven]). Объект занимает область хранения в период его строительства ([class.cdtor]), в течение всей его жизни и в период разрушения ([class.cdtor]).

Второе предложениетам отвечает на ваш вопрос. Если объект может занимать область хранения за пределами периода, описанного как «его время жизни» (например, во время его строительства и разрушения), тогда ясно, что объект должен быть способен существовать за пределами своего времени жизни.

0 голосов
/ 31 октября 2019

Объект в C ++ - это абстрактное понятие. Для машинного кода это просто большой виртуальный массив байтов.

Физический «объект» - это группа байтов в памяти, которые выделяются для какой-то цели и связаны с некоторыми функциями, которые действуют на эти байты. Время жизни этого объекта - это время, когда эти байты используются для цели этого объекта, до того момента, когда они больше не используются. Они все еще существуют впоследствии, но они доступны для использования другим объектом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...