|
| 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
| |
|
|