26.07.2013 Views

Operativsystem: .............................................................

Operativsystem: .............................................................

Operativsystem: .............................................................

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Den vigtigste forskel er teknisk: Et klasseobjekt gemmes som et referenceobjekt i heap’en, det frit<br />

tilgængelige RAM område. Hvis vi skriver således:<br />

XClass x;<br />

har vi erklæret en pointer eller reference til et XClass objekt, men vi har ikke oprettet objektet<br />

endnu! Vi opretter det nye objekt sådan:<br />

x=new XClass();<br />

På den RAM adresse (fx 1000) hvor x gemmes gemmes en anden RAM adresse (fx 4444) hvor<br />

selve objektet gemmes. Klasse objekter er altså mere ’indviklede’ end fx en int eller en struct. Et<br />

klasse obejkt kræver så at sige 2 RAM adresser: en pointer og en destination.<br />

En struct er en value type og gemmes i programmets stack, dets eget RAM område. En struct<br />

svarer til en int eller char eller double. Derfor skal en struct heller ikke – nødvendigvis - instantieres<br />

med new som et klasse objekt! (Men den kan godt instantieres med new!).<br />

Hvis vi har defineret en struct ved navn Punkt, instantierer vi et nyt punkt sådan:<br />

Punkt p1;<br />

Akkurat som vi ville skrive:<br />

int x;<br />

Når strukturer stadig bruges skyldes det at de er meget egnede til at gemme små blokke af data. En<br />

struct må helst ikke fylde mere end 16 bytes. Hvis en struct ikke fylder ret mange bytes, er den mere<br />

effektiv og hurtigere end en klasse. Dette skyldes at structs gemmes på stacken og derfor er der<br />

meget hurtigere access til disse data og en struct kræver ikke så megen ’overhead’ og ’memory<br />

management’ som en klasse.<br />

I nedenstående program er derfor brugt operatoren sizeof() for at vise hvor mange bytes structen<br />

rummer. Programmet erklærer 2 strukturer Dato og Tid og bruger dem til at ’administrere’ datoer<br />

og klokkeslet:<br />

//Eksempel paa anvendelse af structs eller strukturer:<br />

//NB en struct skal helst fylde mindre end 16 bytes!<br />

//structs er value typer som int, char, double.<br />

//structs er en gruppering af data i en 'post' eller 'record'.<br />

using System;<br />

class Strukturer<br />

{<br />

public static void Main(string[] args)<br />

{<br />

//Instantier 2 Dato objekter: NB ingen 'new':<br />

//strukturens medlemmer kan sættes direkte da de er public:<br />

Dato d1;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!