• 1
  • 2
2011-03-16, 16:54
  #13
Medlem
Hmm, verkar speciellt.

Kan man t ex sga s att destruktor r minst vanligast och att ha med en konstruktor r vanligare?

Vad r konstruktorn fr datatyp d (eller vad)? r det en funktion? r det en deklaration av variabler?

Kan det vara s att t ex om man ska gra en enkel funktion (i mitt fall ett funktionsobjekt) inkapslad i en klass, kan det vara s att man inte behver skapa ngon konstruktor?

I denna kod r det vl ingen konstruktor? Vad hnder hr egentligen? r det en funktion i en klass som kan anropas genom () ?
Kod:
class f
{
public:
  int operator()(int tal)
  {
    tal=tal*2;
    tal=tal+100;
    return tal;
  }
};

Den anropas bland annat frn denna:

Kod:
 transform(vec1.begin(),vec1.end(), vec1.begin(), f() );
Citera
2011-03-16, 17:13
  #14
Medlem
Citat:
Ursprungligen postat av IP-pel
Vad r konstruktorn fr datatyp d (eller vad)? r det en funktion? r det en deklaration av variabler?
En konstruktor har ingen "datatyp" - det r ingen funktion i vanlig bemrkelse, utan r det programblock som krs varje gng ett objekt av den klassen skapas. Om du har klassen "A" och skapar ett objekt i ett program med:

Kod:
A objA = new A();

s kommer konstruktorn i "A" att anropas nr objektet "objA" skapas, OK?

En destruktor r lite samma sak - men det r det SISTA programblock som krs fr det objektet.
Drfr brukar man passa p att stnga filstrmmar och liknande saker inom destruktorn, eftersom man vet att programmet inte avslutar utan att exekvera destruktorn.
Citera
2011-03-20, 18:30
  #15
Medlem
Jaha .

Nr man har d en klass som heter A.

Sen i koden skriver man kanske
...
int main(){
A objA;
...

D kan man sga att man har "deklarerat" ett objekt av typen A (/klassen A) som heter objA ? Och d har man automatiskt anropat konstruktorn som d skapar hur objektet ska se ut innehllsmssigt (och samtidigt d vara kopplat till sjlva klassen(med medlemsfunktioner mm(som ligger i public?)?)??.

Men om man inte skapar ngot konstrutkorblock i sin klass (utan kanske bara innehller ett funktionsobjekt), vad hnder d nr man skriver d t ex:
...
int main(){
A objA;
...
Citera
2011-03-20, 18:34
  #16
Medlem
tj.s avatar
Citat:
Ursprungligen postat av IP-pel
Kan man t ex sga s att destruktor r minst vanligast och att ha med en konstruktor r vanligare?

Hur tnkte du nu? (nej, det kan man inte sga...)
Citera
2011-03-20, 21:35
  #17
Medlem
Citat:
Ursprungligen postat av tj.
Hur tnkte du nu? (nej, det kan man inte sga...)
Jo t ex att det r bttre att kunna skapa ett objekt n att ta bort den, kanske. Eller s r det s att jag har ftt lite tokgit uppfattning om och hrt att man inte alltid behver ha med destruktor, det r inte s viktigt och s kanske.

Fr t ex nr man gr en int eller double eller char, s har man ju sjlv ingen destruktor av den ngonstans? (kanske ngot automatiskt?)
Citera
2011-03-20, 21:39
  #18
Medlem
Citat:
Ursprungligen postat av IP-pel
Fr t ex nr man gr en int eller double eller char, s har man ju sjlv ingen destruktor av den ngonstans? (kanske ngot automatiskt?)
Ingen konstruktor heller. Men bekymra dig inte om vad som r vanligast. Anvnd konstruktor nr du behver det. Anvnd destruktor nr du behver det. I mnga fall kommer du behva bdadera.
Citera
2011-03-20, 21:41
  #19
Medlem
Citat:
Ursprungligen postat av IP-pel
Jo t ex att det r bttre att kunna skapa ett objekt n att ta bort den, kanske. Eller s r det s att jag har ftt lite tokgit uppfattning om och hrt att man inte alltid behver ha med destruktor, det r inte s viktigt och s kanske.
Om du vljer att inte skapa ngon destruktor, lgger kompilatorn till en automatiskt.
Citera
2011-03-20, 21:46
  #20
Medlem
Jaha r det s. Kompliatorn gr en destruktor om det fattas en d allts.

Men annars r min uppfattning om vad konstrutkor nogorlunda rtt d d kanske?(s ja inte missuppfattat ngot eller liknande) (om man kollar p inlgg #15)
Citera
2011-03-20, 21:56
  #21
Medlem
Citat:
Ursprungligen postat av IP-pel
Jaha r det s. Kompliatorn gr en destruktor om det fattas en d allts.

Men annars r min uppfattning om vad konstrutkor nogorlunda rtt d d kanske?(s ja inte missuppfattat ngot eller liknande) (om man kollar p inlgg #15)
Jag tycker att din uppfattning verkar vara korekt. Kompilatorn skapar bde en konstruktor och destruktor om ngon av dem skulle saknas. (det skapas faktiskt fler konstruktorer/medlemsoperatorer n de tv nmnda)
__________________
Senast redigerad av RecyclingCenter 2011-03-20 kl. 22:03.
Citera
2011-03-25, 21:51
  #22
Medlem
En snabb frga, om en metod defineras som virtuell i en basklass, blir den d automatiskt virtuell i den hrledda klassen? och eventuellt den hrledda klassen frn den hrledda klassen osv?
Citera
  • 1
  • 2

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in