Care este principala diferență dintre delete [] și delete?
Care este principala diferență dintre delete [] și delete?

Video: Care este principala diferență dintre delete [] și delete?

Video: Care este principala diferență dintre delete [] și delete?
Video: Saab 9-3 Fără manivelă Fără pornire❓ Verificați acest lucru 2024, Aprilie
Anonim

Motivul pentru care sunt separate șterge și șterge operatori este că șterge numește onedestructor în timp ce șterge trebuie să caute dimensiunea matricei și să numească atât de mulți distrugatori. Desigur, folosirea unuia acolo unde este necesar celălalt poate cauza probleme.

În plus, care este diferența dintre free () și delete?

Diferențele dintre ștergere operator și liber() funcţie șterge este un operator în timp ce liber() este funcția de bibliotecă. șterge gratuit memoria alocată și callsdestructor. Dar liber() de-alocarea memoriei, dar nu apelează la destructor. șterge este mai rapid decât liber() deoarece un operator este întotdeauna mai rapid decât o funcție.

De asemenea, știți, ce face ștergerea în C ++? șterge () în C ++ Ștergeți este un operator care este folosit pentru a distruge obiecte matrice și non-matrice (pointer) care sunt creat de o nouă expresie. Care înseamnă Șterge operatordealocează memorie din heap. Indicator la obiect este notdistrus, valoare sau bloc de memorie indicat de pointer este distrus.

Din acest motiv, care este diferența dintre eliminare și ștergere?

Șterge și elimina sunt definite destul de similar, dar principalele diferență între ei este asta șterge mijloace şterge (adică devenit inexistent sau nerecuperabil), în timp ce elimina conotă take away și setaside (dar păstrat în existență).

În ce fel este diferit destructorul de operatorul de ștergere?

Primul distrugător , numit obiectul complet distrugător , efectuează distrugerea fără a apela șterge () pe obiect. Al doilea distrugător , numit ștergerea destructorului , apeluri șterge () după distrugerea obiectului. Dacă un obiect este distrus, dar nu șters din grămada, strigând ștergerea operatorului este greșit.

Recomandat: