Προς το περιεχόμενο

Επίγον πρόβλημα c++ ** Κλάσσεις !!!


nodreams.ct

Προτεινόμενες αναρτήσεις

Δημοσ.

παιδιά

 

έχω τον ακόλουθο κώδικα:

 

>
	CItem* a;
	a= new CItem;
	cin>> a->x;
	delete a;
	cout<< a->x <<" Giati den to typwneis???";
	return 0;

 

ότι εντολές υπάρχουν κάτω απο το delete δεν εκτελούνται...

 

αυτό συμβαίνει μόνο όταν χρησιμοποιώ CItem (είναι μια απλή κλάση που έφτιαξα) για int ας πούμε δουλευει..

 

ο constructor της είναι:

>
CItem::CItem(int code)
{
x=code;
}

 

Τι μπορεί να φταίει;

Δημοσ.

Pws na ektelestoun bre auta pou einai katw apo to "delete a", afou exeis kanei delete to object sou, kai pleon to a den deixnei pouthena! Prepei na bazeis pada to "delete a" san teleutaia edoli, otan teleiwnei i xrisi tou! Diladi:

 

CItem* a;

a= new CItem;

cin>> a->x;

cout<< a->x <<" Tora to tupwnei!";

delete a;

return 0;

 

Upopsin: ama einai opws eipes o constructor, logika prepei i deuteri sou edoli na einai:

a= new CItem(4);

 

Δημοσ.

Molis eida ton kwdika pou mou esteiles email. To lathos sou einai ston destructor tis CItem:

 

CItem::~CItem()

{

// delete this;

}

 

i edoli "delete this" den exei noima pou ebales. Gia auto dimiourgouse lathos to programma to opoio den to ekane catch i C++ kai termatize to programma ksafnika. Ama tin bgaleis, doulevei kanonika.

Δημοσ.

Να σαι καλά φίλε μου!

Και πρέπει να την παραδώσω αύριο και είχα σπάσει το κεφάλι μου να βρώ τι φταίει :)

 

Απορώ πως το βρήκες..

 

Σ'ευχαριστώ και πάλι!

Δημοσ.

Den eimai expert stin C++, to mono pou xreiastika einai koini logiki! : mou eipes oti i teleutaia cout den fainetai. Auto simainei oti kati den paei kala kai den fainetai. Diladi kapoia edoli prin apo autin,dimiourgei exception kai kleinei to programma. Opote diereunoume tin proigoumeni edoli. Itan i "delete a". Auti i edoli, kalei automata ton destructor tis klasis sou. Opote psaxneis meta pros ta ekeini tin kateuthunsi. Ston destructor tis, eida to delete this, pou einai lathos fusika (sbineis mesa sto idio object ton xwro mnimis tou?). Auta!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...