|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
[C++] due domande sulle classi
oggi pomeriggio ho iniziato a leggere qualcosa sulla oop e mi sono accorto di due strane cose che non erano spiegate:
this->(variabile)=(variabile) e _(variabile)=(variabile) cosa significano? |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Oct 2005
Messaggi: 20
|
In merito a This->variabile=variabile posso dirti ke:
-Nella chiamata di una funzione membro f il compilatore introduce un primo parametro nascosto che è l’indirizzo dell’oggetto proprio a cui f viene applicata. Ora Tale parametro e’ un puntatore costante il cui nome è this. All’atto della chiamata &c viene ricopiato in this e attraverso tale puntatore la funzione opera sull’oggetto proprio: es. chiamata di funzione: c.f() oppure p->f() Se consideri ad esempio la funzione int get_n() const; la sua implementazione sarà: int get_n() const{return this->n}; dove il valore di this nella funzione non puo' essere modificato poichè this è un puntatore a costante. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
grazie
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2000
Città: MILANO
Messaggi: 2662
|
this quando sei all'interno di una funzione della classe è sottointeso però si usa per chiarezza soprattutto quando manca la fantasia e uno dei parametri della funzione ha lo stesso nome di un membro della classe...
Codice:
class pizza
{
int ciccia; // è sottointeso essere private
public:
Pizza();
int SetQuantitaCiccia(int);
}
ora definisco la funzione membro:
int pizza::SetQuantitaCiccia(int ciccia)
{
// se adesso scrivi ciccia=ciccia non ha senso, assegna il parametro ciccia a se stesso
this->ciccia=ciccia // corretto: assegna il par ciccia al membro ciccia
}
oppure:
int pizza::SetQuantitaCiccia(int quantita)
{
ciccia=quantita;
// adesso è inequivocabile per il compilatore che ciccia è il membro della classe ma è più leggibile scrivere this->ciccia=quantita
}
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:05.



















