Costruttori classi C++

Tutta l'informatica

Costruttori classi C++

Messaggioda clros » ven nov 02, 2007 10:32 pm

E possibile da un costruttore C++ chiamarne esplicitamente un altro?

Esempio:

class C
{

public:
C(); // <- primo costruttore
C(int); // <- secondo costruttore
~C(); //<- distruttore
};

...

C::C()
{
//inizializzazione di "base"
}

C::C(int a)
{
C::C(); //<- tento di richiamare il primo costruttore per le op di base
//uso il valore di a per altre operazioni
}

...

C::~C()
{
cout<<"sono nel distruttore\n";
}

Ora, se tento di costruire un oggetto con il secondo costruttore, la prima operazione che viene effettuata è... richiamare il distruttore! (Viene mostrata come prima cosa l'output del distruttore e poi gli output del costruttore).

Crendo un oggetto con il primo costruttore, tutto funziona bene.Lo stesso dicasi se uso il secondo costruttore dopo aver eliminato all'interno di esso l'invocazione del primo costruttore.

Dove sbaglio?
Only AMIGA makes it possible !!
La colpa è sempre del Kernel!!
...un bit è formato da 8 byte...

Claudio "CP" La Rosa
Avatar utente
clros

Supremo
 
Messaggi: 3473
Iscritto il: ven mag 07, 2004 2:41 pm
Località: SYS 64738

Re: Costruttori classi C++

Messaggioda riko » sab nov 03, 2007 12:12 am

No. Non è assolutamente possibile. Sui miei manuali c'è pure scritto.
Puoi chiamare un costruttore specifico della classe base, ma non puoi assolutamente chiamare un costruttore 'fratello'.

Non è comunque un grosso problema. La sintassi di costruzione esplicita è sufficientemente comoda.
-enrico
fibs = 0 : 1: [ a + b | (a, b) <- zip fibs (tail fibs) ]


Akropolix: Community OFF-TOPIC di IKSnet
http://www.akropolix.net/forum

"se do da mangiare a un affamato mi dicono che sono un santo, se mi chiedo perch? ? affamato mi dicono che sono un comunista" (Helder C?mara, Arcivescovo di Recife)
Avatar utente
riko

Supremo
 
Messaggi: 3329
Iscritto il: gio mar 04, 2004 4:28 pm
Località: Chiba City

Re: Costruttori classi C++

Messaggioda clros » sab nov 03, 2007 12:45 am

riko ha scritto:No. Non è assolutamente possibile. Sui miei manuali c'è pure scritto.
Puoi chiamare un costruttore specifico della classe base, ma non puoi assolutamente chiamare un costruttore 'fratello'.

Non è comunque un grosso problema. La sintassi di costruzione esplicita è sufficientemente comoda.


Volevo farlo anche perchè in java faccio quasi sempre così.

Ho dato una *veloce* occhiata al Stroustrup, ma non ho trovato nulla, per questo credevo fosse fattibile anche in C++.
Sui testi scolastici delle superiori che ho qui con me, non si dice nulla al riguardo.

Grazie Riko! :felice:
Only AMIGA makes it possible !!
La colpa è sempre del Kernel!!
...un bit è formato da 8 byte...

Claudio "CP" La Rosa
Avatar utente
clros

Supremo
 
Messaggi: 3473
Iscritto il: ven mag 07, 2004 2:41 pm
Località: SYS 64738

Re: Costruttori classi C++

Messaggioda riko » dom nov 04, 2007 6:46 pm

Per *imparare* a programmare in C++ oltre stroustrup e/o Lippman Lajole sono completamente indispensabili altcuni fra i seguenti libri:

1. Effective C++ (Meyers)
2. More Effective C++(Meyers)
3. Effective STL (Meyers)

4. Exceptional C++ (Sutter)
5. More Exceptional C++ (Sutter)

6. The C++ Standard Library (Josuttis)

7. Modern C++ Design (Alexandrescu)

Nota che ci sono ripetizioni. Ovvero, non è necessario averli *tutti*. Io per esempio ho i primi 3 e il sesto. E devo dire che mi hanno reso un programmatore C++ decisamente migliore.
-enrico
fibs = 0 : 1: [ a + b | (a, b) <- zip fibs (tail fibs) ]


Akropolix: Community OFF-TOPIC di IKSnet
http://www.akropolix.net/forum

"se do da mangiare a un affamato mi dicono che sono un santo, se mi chiedo perch? ? affamato mi dicono che sono un comunista" (Helder C?mara, Arcivescovo di Recife)
Avatar utente
riko

Supremo
 
Messaggi: 3329
Iscritto il: gio mar 04, 2004 4:28 pm
Località: Chiba City

Re: Costruttori classi C++

Messaggioda clros » mar nov 06, 2007 2:51 pm

Grazie Riko!

(vedrò di leggerli di notte! :riflette: )
Only AMIGA makes it possible !!
La colpa è sempre del Kernel!!
...un bit è formato da 8 byte...

Claudio "CP" La Rosa
Avatar utente
clros

Supremo
 
Messaggi: 3473
Iscritto il: ven mag 07, 2004 2:41 pm
Località: SYS 64738

Re: Costruttori classi C++

Messaggioda riko » mar nov 06, 2007 3:34 pm

clros ha scritto:Grazie Riko!

(vedrò di leggerli di notte! :riflette: )


Beh, quelli di Meyers sono anche uno spasso da leggere. Sono tre libri, ma piuttosto sottili. Direi meno di 300 pagine l'uno :)
-enrico
fibs = 0 : 1: [ a + b | (a, b) <- zip fibs (tail fibs) ]


Akropolix: Community OFF-TOPIC di IKSnet
http://www.akropolix.net/forum

"se do da mangiare a un affamato mi dicono che sono un santo, se mi chiedo perch? ? affamato mi dicono che sono un comunista" (Helder C?mara, Arcivescovo di Recife)
Avatar utente
riko

Supremo
 
Messaggi: 3329
Iscritto il: gio mar 04, 2004 4:28 pm
Località: Chiba City


Torna a Tecnologia, internet, coding

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti