Instanciando objetos: com ou sem novo
Ao criar objetos em C , os programadores podem usar o operador "new" ou instanciá-los diretamente sem ele. Embora ambas as abordagens criem objetos, elas diferem em vários aspectos importantes.
Sem Novo
Instanciar um objeto sem "novo" reserva diretamente memória para ele no escopo atual. Isso normalmente é feito na pilha e resulta em um objeto com vida útil automática. O objeto é criado e destruído automaticamente dentro do escopo em que foi definido.
Por exemplo:
Time t(12, 0, 0); // t is a Time object
No código acima, o objeto "Time" "t" é criado na pilha e seu tempo de vida está vinculado ao escopo atual.
Com New
Usar "new" para instanciar um objeto aloca memória para ele dinamicamente no heap. Isso permite que o objeto seja criado e destruído explicitamente quando sua vida útil terminar. O ponteiro "t" armazena o endereço heap do objeto.
Por exemplo:
Time* t = new Time(12, 0, 0); // t is a pointer to a dynamically allocated Time object
Aqui, o ponteiro "t" recebe o endereço de heap do objeto "Time" recém-criado. A vida útil do objeto é independente do escopo e persiste até que o operador "delete" seja usado para liberar sua memória.
Principais diferenças
É importante observar que essas diferenças são específicas da implementação, pois o padrão C não define explicitamente o comportamento da pilha e do heap. No entanto, na maioria das implementações práticas, a memória stack é usada para objetos automáticos e a memória heap é usada para objetos dinâmicos.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3