#include <iostream>
class A
{
char * stringa;
public:
A(int size)
{
cout << endl <<"costruttore 1" << endl;
stringa = new char [size+1];}
// A( const A & from) {
// stringa = from.stringa;
// }
void set (char * s)
{
strcpy(stringa,s);
}
void print ()
{
cout << stringa << " -- " << strlen(stringa) << endl;
}
};
void f(A aa)
{
cout << endl << "f:" << endl;
aa.print();
aa.set("pippo");
aa.print();}
void main ()
{
A a0(80);
a0.set("paperino");
cout << endl << "main1:" << endl;
a0.print();
f(a0);
cout << endl << "main2:" << endl;
a0.print();/*Il valore dell'ultima stampa a video è pari alla stringa "pippo"; infatti la copia dell'oggetto (quando viene chiamata "f(a0)") viene eseguita byteXbyte quindi un'eventuale modifica della stringa dell'oggetto "aa" comporta la modifica anche della stringa dell'oggetto "a0". */
}