PDA

Visualizza la versione completa : [c++]costruttore non funziona?


wiligelm
30-11-2003, 19:38
class A
{
int i;
public:
A();
~A();
}

A::~A()
{ cout << "distruttore" << endl; }



caso 1:


A::A()
{
i=3; cout << "ciao" << endl;
}

int main()
{
A a();
}


in questo caso il programma non stampa la stringa "ciao"
e non stampa "distruttore"

caso 2:


A::A(int n)
{
i=n; cout << "ciao" << endl;
}

int main()
{
A a(3);
}

in questo caso viene stampata la stirnga "ciao"
e anche la stringa "distruttore"

sembrerebbe che il costruttore senza parametri
non venga chiamato e visto non viene chiamato il distruttore
sembra che non venga istanziato l'oggetto neancjhe
col costruttore di default. perch?

N.B. uso il borland gratuito (linea di comando) e il dev c++
col dev c++ facendo le opportune modifiche come usare
std::cout invece che cout

Yojimbo
30-11-2003, 21:30
invece di


A a();


metti:



A a;


a me funziona perfettamente se lo metto cosi,usando il gcc, nn pensavo che delle parentesi praticamente inutili dessero simili problemi...

pixer
30-11-2003, 21:55
Originariamente inviato da wiligelm
A a();togli le parentesi da a.

wiligelm
01-12-2003, 15:41
grazie, vero, adesso funziona anche a me :D ,
siccome da qualche parte ho letto che la dichiarazione A a l'abbreviazione di A a(), quello che ho letto sbagliato oppure dipende dal compilatore?

pixer
01-12-2003, 18:44
Originariamente inviato da wiligelm
grazie, vero, adesso funziona anche a me :D ,
siccome da qualche parte ho letto che la dichiarazione A a l'abbreviazione di A a(), quello che ho letto sbagliato oppure dipende dal compilatore? dipende dal costruttore, se al costruttore non devi passare nessun parametro allora inutile aggiungere le parentesi, che invece sono obbligatorie con le funzioni.

wiligelm
02-12-2003, 17:48
ok grazie

wiligelm
02-12-2003, 17:51
-

Loading