| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  20-04-2012, 10:04 | #1 | 
| Senior Member Iscritto dal: Nov 2003 
					Messaggi: 1102
				 | 
				
				[C++] Funzione restituisce riferimento a oggetto proprio
			 
		Raga, vi posto questo codice : sto studiando l'overloading degli operatori Codice: Table::Table(const Table &t){
p=new char[size=t.size];
for (int i=0; i<size; i++)
p[i]=t.p[i];Codice: const Table& Table::operator= (const Table & t){
if(this != &t) {   //self assignment!
delete [] p;
p=new char[size=t.size];
for (int i=0; i<size; i++)
p[i]=t.p[i];
}
return *this;
}Codice: const Table& Table 2- ma this(puntatore all'oggetto proprio non dovrebbe avere lo stesso indirizzo di t, quindi il programma non dovrebbe nemmeno andare avanti,dove mi sbaglio? Ultima modifica di ubanton : 20-04-2012 alle 10:06. | 
|   |   | 
|  20-04-2012, 13:08 | #2 | 
| Member Iscritto dal: Jul 2009 Città: Milano 
					Messaggi: 270
				 | 
		Non stai modificando t ma l'oggetto *this.  Codice: Table t1, t2; t1 = t2; // operatore =. Equivale a t1.operator=(t2) Penso sia buona norma considerare la possibile eccezione bad_alloc, non tanto per questo esempio ma per capire i momenti in cui serve in fase di apprendimento. Codice: const Table& Table::operator= (const Table & t){
  if(this != &t) 
  {   // i due oggetti differiscono
     char* old_p = p;
     size_t old_size = size;
     p = 0;
     try 
     {
        // l'assegnamento di size potrebbe sfuggire scritto qui
        p = new char[size=t.size]; 
     } catch (std::bad_alloc e)
     {
        // si ristabilisce lo stato iniziale. Sarà il chiamante che
        // deciderà cosa fare.
        delete[] p;
        p = old_p;
        size = old_size;
        throw std::bad_alloc;
     }
     for (int i=0; i<size; i++)
       p[i]=t.p[i];
  }
  return *this;
}
				__________________ AMD PII x4 955 BE | Sapphire HD4850 Vapor-X 1 GB | Samsung SpinPoint F1 500GB | Samsung EcoGreen F4 2TB Gigabyte GA-MA790FXT-UD5P | Fractal Design Define R3 USB3.0 Titanium Grey | CORSAIR 650W CMPSU-650TX Noctua U12P SE2 | 2 x 2GB Kingston 1333 MHz | Samsung SyncMaster P2450 | Samsung SyncMaster T200 Ultima modifica di __ZERO_UNO__ : 20-04-2012 alle 13:15. | 
|   |   | 
|   | 
| Strumenti | |
| 
 | 
 | 
Tutti gli orari sono GMT +1. Ora sono le: 11:46.









 
		 
		 
		 
		







 
  
 



 
                        
                        










