ubanton
20-04-2012, 10:04
Raga,
vi posto questo codice : sto studiando l'overloading degli operatori
Table::Table(const Table &t){
p=new char[size=t.size];
for (int i=0; i<size; i++)
p[i]=t.p[i];
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;
}
la classe viene definita nel file di specifica che non ho scritto, ma il dubbio è modifico l'oggetto proprio t nella seconda parte con p[i]=t.p[i]; e faccio return *this, ma se il riferimento èconst Table& Table io non potrei modificarlo e invece lo modifico(o forse non posso modificare l'oggetto a mezzo del riferimento che poi come sarebbe?)
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?
vi posto questo codice : sto studiando l'overloading degli operatori
Table::Table(const Table &t){
p=new char[size=t.size];
for (int i=0; i<size; i++)
p[i]=t.p[i];
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;
}
la classe viene definita nel file di specifica che non ho scritto, ma il dubbio è modifico l'oggetto proprio t nella seconda parte con p[i]=t.p[i]; e faccio return *this, ma se il riferimento èconst Table& Table io non potrei modificarlo e invece lo modifico(o forse non posso modificare l'oggetto a mezzo del riferimento che poi come sarebbe?)
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?