17. juli 2005 - 23:25
Der er
12 kommentarer og 1 løsning
Implementering af object.free metode
Davs. Vil høre om følgende implementering har nogle problemer: void File_Handle::free() { delete this; } Metoden skal "slette" objektet og skal kaldes ved: f = new File_Handle(); f.free() mvh rrm
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
hvorfor ikke: f = new File_Handle(); delete f; ?
Har vænnet mig til at bruge free metoden (fra java, delphi)... Synes også den virker mere logisk end delete.. Men det er måske bare mig.
jeg tror at det vil forvirre mange C++ programmører jeg kan principielt ikke lide at deallokere et objekt mens man kalder en metode på objektet File_Handle f(); f.free(); er også suspekt !
jeg lader den lige stå åbent lidt endnu for at se andre input...
arne_v: vil du mene at det er mest naturligt at en instancs af en entitets klasse ikke har tilladelse til at slette sig selv men at det derimod bør være dens ejer (manager eller lign. ) som har ansvaret for at deallokerer ?
Du kan naturligvis gøre: #include <iostream> class X { public: void *operator new(size_t aSize) { std::cout << "X::new" << std::endl; return malloc(aSize); } void operator delete(void *aP) { std::cout << "X::delete" << std::endl; free(aP); } }; int main() { X *x = new X; delete x; } Men det er sjældent at man har en grund.
har i nogle links til sider med gode normer om hvordan man koder i c++??
26. juli 2005 - 18:10
#10
Ingen links men et par bøger "Effective C++" og "More effective C++" af Scott Meyers var en mulighed
27. juli 2005 - 00:06
#11
ok, dem vil jeg kigge efter hvis jeg kan finde dem på biblioteket.... Men bertelbrander og arne smid et svar så i kan få point..
27. juli 2005 - 00:07
#12
.
27. juli 2005 - 01:07
#13
Jeg samler ikke på point.
Kurser inden for grundlæggende programmering