Это действительно?
Да, это действительно
Что именно происходит?
A();
Создает временное безымянное имяобъект типа A
, вызывая его конструктор по умолчанию без аргумента, но объект разрушается к тому времени, когда следующий оператор выполняется с тех пор.
Если так, то как он был создан, так как я этого не делалиспользовать новый или какой-либо объект?
Вы можете создавать объекты в локальном / автоматическом хранилище или в динамическом хранилище в зависимости от вашего использования.
Когда вы используете new
объекты создаются в динамическом хранилище (куче), когда вы создаете объект, который у вас есть, он создается в локальном / автоматическом хранилище (стеке).
Таким образом, использование new
определяет только , где объект будет создан, а не , будет ли он создан.
Что такое временные безымянные объекты?
Вам не всегда нужно присваивать имена объектам, чтобы создавать их экземпляры.
Например:
При вызове функции при передачеобъекты со значением временные безымянные объекты создаются и автоматически уничтожаются все время. Это объекты, которые не имеют никакого имени и, следовательно, не могут быть явно указаны в программе, но они служат цели, для которой они были созданы.
Проще говоря,
Вы создаете безымянный временный объект в локальном / автоматическом хранилище, которого не существует после завершения выполнения оператора.