Originariamente inviato da AlexlovesUSA
Ciao a tutti.
Ho studiato dal libro di C++ che quando una funzione si definisce virtual, ossia può essere chiamata tramite puntatore, il che si usa nel polimorfismo ecc..., alla fine della stessa si mette la parola riservata const. Ho notato anche che ci sono, sia sul libro che negli esercizi del mio professore, delle funzioni che, pur non essendo definite virtuali, hanno la parola const alla fine. Cosa significa e perchè si mette?
const e virtual sono due concetti ortogonali, cioè un metodo può essere const ma non virtual, virtual ma non const, sia const che virtual e né const né virtual, le due cose sono indipendenti.
virtual mi pare di capire che già sai a cosa serve; const invece fa sì che il metodo non possa modificare i campi della classe, e di riflesso per questo può richiamare solo metodi const (dell'oggetto su cui opera). Per dirla in un'altra maniera, il puntatore che this che viene passato ad una funzione const è a sua volta const, per cui tramite esso il metodo non può modificare i dati puntati.
Per ulteriori informazioni, ti consiglio di leggere questa pagina.
P.S.
1)Per quanto riguarda il puntatore *this, da quanto ho capito, sarebbe un altro nome per indicare la classe dentro la quale ci troviamo, giusto?
I metodi in realtà sono delle normali funzioni, a cui viene passato come argomento "nascosto" il puntatore this, tramite il quale il metodo "sa" su che istanza della classe opera.
2)Se volessi realizzare un programma ad oggetti con l'allocazione di memoria dinamica, il delete, dovrei metterlo all'interno del distruttore?
Se è solo la classe in questione a "possedere" la memoria che vai a deallocare, sì.