/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
this og instans.
Fra : Jack L.


Dato : 17-06-02 19:46

To spørgsmål før jeg skal møde djævlerne (lærer og censor).

1) En instans er et andet ord for objekt. Korrekt? Hvis ja, er det et begreb
man kan bruge i flæng eller er det i forbindelse med en specifik sammenhæng?

2) this-pointeren. I hvilke situationer kan jeg drage nytte af 'this'? En
kort introduktion af 'this' vil være rart.

Jeg ved godt, at dk.edb.programmering.c ikke er et tag-selv-bord, men jeg
kan ikke nå at læse samtlige emner op til eksamen, så hvis nogen er rar at
forklare for mig? =)


--
Med venlig hilsen / Kind regards,
Jack L.,
Copenhagen, EU



 
 
Claus Rasmussen (17-06-2002)
Kommentar
Fra : Claus Rasmussen


Dato : 17-06-02 20:03

Jack L. wrote:

> 1) En instans er et andet ord for objekt. Korrekt? Hvis ja, er det et
> begreb man kan bruge i flæng eller er det i forbindelse med en specifik
> sammenhæng?

Ja. "instans" bruges ofte i forbindelse med "klasse", når man vil under-
strege relationen mellem en given klasse og dens instanser. F.eks "Her er
en klasse og her er dens instanser" imodsætning til "... her er dens
objekter", hvor der i daglig tale kan være tvivl om der med "objekter"
menes instanser af klassen eller objekter ejet af instanser af klassen.


> 2) this-pointeren. I hvilke situationer kan jeg drage nytte af 'this'? En
> kort introduktion af 'this' vil være rart.

this bruges f.eks til at tage adressen af det aktuelle objekt:

Some& operator=(const Some& other) {
if (this != &other) // Avoid self assignment 'a = a'
...
}

Det bruges også til at skabe en reference til det aktuelle objekt:

struct Some {
friend bool operator==(const Some& l, const Some& r);

void f(const Some& other) {
if (*this == other)
...
}
};

Sjældnere bruges this til at udpege en member entydigt:

struct Some {
int i;
void f(int i) {
this->i = i;
}
};

Hvilket dog er en lappe-løsning på noget klyt (men jeg mener, at der
er situationer, hvor der er nødvendigt).

-Claus


Jack L. (17-06-2002)
Kommentar
Fra : Jack L.


Dato : 17-06-02 20:21


"Claus Rasmussen" <clr@cc-consult.dk> wrote in message
news:aelbpl$1v3$1@sunsite.dk...
> Jack L. wrote:
>
> Ja. "instans" bruges ofte i forbindelse med "klasse", når man vil under-
> strege relationen mellem en given klasse og dens instanser. F.eks "Her er
> en klasse og her er dens instanser" imodsætning til "... her er dens
> objekter", hvor der i daglig tale kan være tvivl om der med "objekter"
> menes instanser af klassen eller objekter ejet af instanser af klassen.

Tak Claus. Så har jeg fået det fastslået. :)

Og om din forklaring af this-pointeren skal jeg lige have tygget det lidt
mere.


--
Med venlig hilsen / Kind regards,
Jack L.,
Copenhagen, EU



Bertel Lund Hansen (17-06-2002)
Kommentar
Fra : Bertel Lund Hansen


Dato : 17-06-02 21:00

Jack L. skrev:

>Og om din forklaring af this-pointeren skal jeg lige have tygget det lidt
>mere.

class Dog : public Animal {
   blablablablablabla
}

int main () {
   Dog gysse = new Dog(3);
}

I main() ved man at objektet hedder gysse, men hvis man skriver
kode i selve Dog-klassen så hedder objektet jo ikke noget for der
er ikke noget endnu. Derfor har man lavet fiduspointeren this.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Claus Rasmussen (17-06-2002)
Kommentar
Fra : Claus Rasmussen


Dato : 17-06-02 21:11

Bertel Lund Hansen wrote:

> Dog gysse = new Dog(3);

Mindre detalje: "Dog* gysse..."


> I main() ved man at objektet hedder gysse, men hvis man skriver
> kode i selve Dog-klassen så hedder objektet jo ikke noget for der
> er ikke noget endnu. Derfor har man lavet fiduspointeren this.

"endnu" ? Jeg ville skrive:

I main() ved man at objektet hedder gysse, men hvis man skriver
kode i selve Dog-klassen så har man ikke noget navn for objektet.
Derfor har man lavet fiduspointeren this.

Jeg skriver, fordi du med din forklaringen lige snitter et urelateret
problem, der opstår når man fra en constructor kalder en member
function (eller endnu værre: en virtual member function), fordi
objektet "endnu" ikke er fuldt konstrueret.

Eller en god og ligetil forklaring på 'this'.

-Claus


Claus Rasmussen (17-06-2002)
Kommentar
Fra : Claus Rasmussen


Dato : 17-06-02 21:30

Claus Rasmussen wrote:

> Eller en god og ligetil forklaring på 'this'.

s/Eller/Ellers/

-Claus


Søg
Reklame
Statistik
Spørgsmål : 177496
Tips : 31968
Nyheder : 719565
Indlæg : 6408491
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste