30. juli 2003 - 10:44Der er
11 kommentarer og 2 løsninger
klasse deklarations spørgsmål
hvad betyder:DSRAgent::DSRAgent(): Agent(PT_DSR), request_table(128),route_caching()...
DSRAgent::DSRAgent(): Agent(PT_DSR): tror jeg selv betyder DSRAgent extender Agent og tilhører DSRAgent klassen. Det er mere de efterfølgende , , , jeg er i tvivl om (er det interfaces?)
Man må forøvrigt ikke skrive ): i sin overskrift:
Følgende felter er ikke korrekte :
* ") :" er ikke med til at beskrive dit problem, så formuler venligst en bedre titel.
Mød TrackMan og Veo på Computerworld Cloud & AI Festival og hør, hvordan tech ændrer måden, vi træner og udvikler talent – fra skolebold til The Masters.
Vær endvidere opmærksom på at hvis en klasse indeholder et objekt af en klasse og ikke kun en pointer til den, så skal det objekt også initialiseres i constructoren på denne måde (fordi det reeelt er det samme som at arve fra den klasse).
Og det er efter min personlige opfattelse en meget god grund til altid kun at lade klasser indeholde pointere til andre klasser og så kalde deres constructorer i new i ens constructor.
"hvis en klasse indeholder et objekt af en klasse og ikke kun en pointer til den, så skal det objekt også initialiseres i constructoren på denne måde". Det er kun sandt i det tilfælde hvor der ikke eksisterer en (parameterløs) default constructor.
Med "fordi det reeelt er det samme som at arve fra den klasse" hentyder du måske til hvad der foregår bag facaden? Vi må da kunne enes om, at det designmæssigt IKKE er det samme..?
Så er der jo endelig også en anden forskel mht. brugen af initializer lists, nemlig performance. I tilfælde hvor både constructor og evt. assignment metoder allokerer hukommelse vil man kunne "spare" et sådant kald.
Det er rigtigt at parameter løse constructors kan udelades. Men det gælder også for både arvede klasser og indeholdte klasser.
Om der er forskel på arv og indeholdt klasse. Ja - der er jo en åbenlys syntax forskel. Men både med hensyn til hvad der faktisk sker og rent begrebsmæssigt er de meget ens.
Vi er helt enige om at det ikke er hensigtsmæssigt først at kalde en constructor i en init liste og så lave det hele om i selve constructoren.
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.