Создание экземпляров объектов: с созданием или без него
При создании объектов на C программисты могут использовать либо оператор «new», либо создавать их экземпляры напрямую без этого. Хотя оба подхода создают объекты, они различаются в нескольких ключевых аспектах.
Без нового
Создание экземпляра объекта без слова «new» напрямую резервирует для него память в текущей области видимости. Обычно это делается в стеке и в результате получается объект с автоматическим временем жизни. Объект создается и уничтожается автоматически в пределах области, в которой он был определен.
Например:
Time t(12, 0, 0); // t is a Time object
В приведенном выше коде объект «Time» «t» создается в стеке, и его время жизни привязано к текущей области действия.
С New
Использование «new» для создания экземпляра объекта динамически выделяет для него память в куче. Это позволяет явно создавать и уничтожать объект по окончании срока его службы. Указатель «t» хранит адрес кучи объекта.
Например:
Time* t = new Time(12, 0, 0); // t is a pointer to a dynamically allocated Time object
Здесь указателю «t» присваивается адрес кучи вновь созданного объекта «Time». Время жизни объекта не зависит от области действия и сохраняется до тех пор, пока оператор «удалить» не будет использован для освобождения его памяти.
Ключевые различия
Важно отметить, что эти различия зависят от реализации, поскольку стандарт C не определяет явно поведение стека и кучи. Однако в большинстве практических реализаций стековая память используется для автоматических объектов, а динамическая память — для динамических объектов.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3