Avatar billede rrm Nybegynder
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
Avatar billede arne_v Ekspert
17. juli 2005 - 23:29 #1
hvorfor ikke:

f = new File_Handle();
delete f;

?
Avatar billede rrm Nybegynder
17. juli 2005 - 23:35 #2
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.
Avatar billede arne_v Ekspert
17. juli 2005 - 23:38 #3
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 !
Avatar billede rrm Nybegynder
17. juli 2005 - 23:49 #4
jeg lader den lige stå åbent lidt endnu for at se andre input...
Avatar billede krismort Nybegynder
18. juli 2005 - 13:05 #5
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 ?
Avatar billede arne_v Ekspert
18. juli 2005 - 13:16 #6
ja
Avatar billede krismort Nybegynder
18. juli 2005 - 18:48 #7
så er vi enige, arne :)
Avatar billede bertelbrander Novice
23. juli 2005 - 20:05 #8
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.
Avatar billede rrm Nybegynder
26. juli 2005 - 16:31 #9
har i nogle links til sider med gode normer om hvordan man koder i c++??
Avatar billede arne_v Ekspert
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
Avatar billede rrm Nybegynder
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..
Avatar billede arne_v Ekspert
27. juli 2005 - 00:07 #12
.
Avatar billede bertelbrander Novice
27. juli 2005 - 01:07 #13
Jeg samler ikke på point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester