WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   c++ - Konstruktoren - Initialisierung - vorzugsschreibweise (http://www.wcm.at/forum/showthread.php?t=132862)

Bastet 29.04.2004 21:35

c++ - Konstruktoren - Initialisierung - vorzugsschreibweise
 
hallo leute - nach ner lernpause gehts endlich wieder frisch ans werk.

also nach längerem recherchieren in verschiedenen quellen, hab ich mal alle schreibweisen des konstruktors zusammengeschrieben.
ich weiss, dass manche schreibweisen zusätzliche prozeduren/basiskonstr. durchführen/aufrufen und mehr platz brauchen, allerdings ist mir nicht wirklich klar welche es sind und wann ich eine der angeführten bevorzugen sollte.

dummie aw bevorzugt ;)
merci

Code:

class auto                                //inline Konstruktor
{ int Raeder;
  double Gewicht;
public:
auto(int EinRaeder, double EinGewicht)
 {
    Raeder=EinRaeder;
    Gewicht=EinGewicht;

    cout << "bla bla bla";
    }
};

/////////

class auto                                //inline Konstruktor
{ int Raeder;
  double Gewicht;
public:
auto(int EinRaeder, double EinGewicht) :
Raeder(EinRaeder),Gewicht(EinGewicht) {}
};

/////////

class auto                                //extern Konstruktor
{ int Raeder;
  double Gewicht;
public:
auto(int, double);
};

auto::auto(int EinRaeder,  double EinGewicht) :
Raeder(EinRaeder), Gewicht(EinGewicht) {}

/////////

class auto                                // externer Konstruktor
{ int Raeder;
  double Gewicht;
public:
auto(int, double);
};

auto::auto(int Raeder, double EinGewicht) :
Gewicht(EinGewicht)
{
    this->Raeder=Raeder;
}

//////////
/////////


class autobus : public auto          //abgeleitete Klasse - extern Konstruktor (SUBklasse)
{  string Farbe;
public:
autobus(int, double, string);          //zuerst BASISklassenattrib. dann SUBklassenattrib.
};

autobus::autobus(int Raeder, double Gewicht, string EinFarbe) :
 Farbe(EinFarbe), auto(Raeder, Gewicht) {}


K@sperl 29.04.2004 23:03

Also ich hab bis jetzt immer den Konstruktor (und auch die Methoden) im .h File deklariert und im .cpp File implementiert. Ist meiner Meinung nach am übersichtlichsten dies zu trennen.

zB.:
Code:

car.h
class Car {
  private:
    int length;
    String model;
  public:
  Car(int length, String model);
  printCar();
}


car.cpp
Car::Car(int length, String model) {
  this->length = length;
  this->model = model;
}

Car::print() {
 cout << .....
}


Biri 03.05.2004 10:28

hi !

hab das auch immer so gemacht, wie von k@sperl beschrieben.
Imho. ist lesbarkeit/verständlichkeit vom source wichtiger, als dass der konstruktor 1/1000000 sekunde schneller aufgerufen wird - bei der normalen anwendungsprogrammierung zumindest.

fg
-hannes

Bastet 03.05.2004 13:16

naja wenns zwecks leichter lesen ginge... ich bevorzuge eigentlich eher die inline konstruktoren.

Code:

class auto                       
{ int Raeder;
  double Gewicht;
public:
auto(int EinRaeder, double EinGewicht) :
Raeder(EinRaeder),Gewicht(EinGewicht) {}
};



Alle Zeitangaben in WEZ +2. Es ist jetzt 12:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag