Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

Overloading degli operatori New e Delete in C++

Articolo scritto da Damiano Verda
Pagina 1 di 2

Tra le caratteristiche distintive del linguaggio C++ rispetto ad altri linguaggi di programmazione, individuiamo senz'altro la possibilità di estendere l'utilizzo del meccanismo di overloading anche agli operatori, oltre che alle funzioni o ai metodi di una classe.

In estrema sintesi, l'overloading è, in generale, un meccanismo che consente di differenziare funzioni con lo stesso nome (e di solito uno scopo simile ma non identico) sulla base del numero e della tipologia di parametri forniti.
Ad esempio, potrei definire due funzioni di stampa, una generica (senza parametri) che stampa una serie di informazioni prefissata, e un'altra in cui l'utente è in grado di specificare, impostando opportunamente alcuni parametri, quali sono le informazioni di interesse e dunque da stampare.

La funzione di stampa viene, quindi, in questo caso ridefinita per adattarsi alle diverse informazioni fornite in input dall'utente. In modo analogo il C++ consente di ridefinire anche gli operatori: pensiamo agli operatori matematici "+", "-", "*" e "/". Può essere interessante e pratico, ad esempio, ridefinire l'operatore "+" nel caso in cui sia applicato non a numeri, ma a stringhe (insiemi di caratteri alfanumerici). In quest'ultimo caso la "somma" delle stringhe corrisponderà alla concatenazione, ad esempio se la stringa a corrisponde a "Ciao " e la stringa b a "mondo", l'operazione

string c=a+b
porterà alla creazione della stringa c, il cui valore sarà "Ciao mondo".

L'overloading, e in particolare l'overloading degli operatori in C++, sono comunque stati trattati in un precedente articolo, a cui rimandiamo per ulteriori approfondimenti.

(L'articolo continua più sotto...)

Ci proponiamo ora di valutare, invece, in modo specifico come questo stesso meccanismo possa essere esteso anche ad altri tipi di operatori e con quale utilità, in particolare facendo riferimento agli operatori new e delete, utili per la gestione della memoria.

Gestione della memoria

Gli operatori new e delete sono utili per la gestione della memoria, in particolare per riservare e assegnare (o allocare) la memoria necessaria per un nuovo oggetto (new) e per liberare (o deallocare) tale memoria per futuro utilizzo (delete).

Un aspetto molto interessante del C++, che lo distingue dal C, è proprio l'esistenza di new e delete, che consentono, ad esempio per quanto riguarda new, di eseguire il calcolo dello spazio necessario per ciascun oggetto in modo automatico (mentre il comando equivalente in C, malloc, impone al programmatore di specificare qual è la dimensione dell'oggetto da allocare).

Risulta naturale a questo punto chiedersi quale possa essere l'utilità di un meccanismo di overloading, dato che il punto di forza di new e delete è proprio una grandissima generalità di utilizzo, che pare rendere non necessaria una ridefinizione che tenga conto di diversi casi. Il prezzo di un operatore così generico è, però, come spesso accade, una certa mancanza nel controllo dell'esecuzione. Ad esempio, non è possibile, servendosi della versione di default dell'operatore new, verificare con semplicità se ci siano stati problemi nell'allocazione della memoria necessaria (la memoria è disponibile? è stata allocata correttamente?). Per ovviare a questo problema si può ricorrere proprio all'overloading.

Tratteremo dunque ora, con un semplice esempio, un caso di overloading dell'operatore new, sottolineando come le considerazioni fornite e le procedure indicate siano valide anche se si desidera effettuare overloading rispetto all'operatore delete.

Corsi
Corso ASP da ZeroCorso ASP da Zero
Imparare Microsoft ASP e VBScript da zero. A partire da 29 €.
Corso CSSCorso CSS
Web Design ed Accessibilità secondo il W3C con CSS ed XHTML. A partire da 29 €.
Corso VB.NETCorso VB.NET
Realizzare applicazioni Desktop con Visual Basic .NET. A partire da 49 €.
Vedi anche...
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122