Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge

UML/C++ Frage

d-oli / 1 Antworten / Flachansicht Nickles

Hallo Leute

Folgende Frage:

// Wenn das eine Aggregation ist ... (ises doch - nicht?)

class baseClass{
public:
baseClass(){ setValue(
0); }

int getValue(){ return _Value; }
void setValue(int Val){ _Value = Val; }

private:
int _Value;
};

class usingClass{
public:
usingClass(){ bC = new baseClass; }
virtual ~usingClass(){ delete bC; }
...

private:
baseClass* bC;
...
};

// -----------------------------------

// Was ist denn das ... ?

class usingClass{
public:
usingClass(baseClass * bC){ bC = new baseClass; }
...

private:
...
};

// ... auch ne Aggregation? Oder ises ne Dependency?

Dank und Gruss, d-oli
Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
vergisses d-oli „UML/C++ Frage“
Optionen

Hi d-oli,

Das 2. Beispiel ist eine Instanziierung.
Dem Konstruktor wird ein Zeiger auf ein baseClass Objekt übergeben.
Anschließend instanziiert der Konstruktor ein neues baseClass Objekt
und laesst den übergebenen Zeiger darauf zeigen.
Falls der Zeiger vorher auf ein Objekt gezeigt haben sollte,
ist dieses derefenziert und zumindest im Konstruktor nicht
mehr adressierbar. (Prima Falle für ein Speicherleck....)
Das übergebene baseClass Objekt ist offensichtlich kein Memberobjekt
der usingClass und liegt außerhalb dieser und wird deshalb
wohl auch mit Call by Reference übergeben.

Das Ganze hat also nichts mit Vererbung, Polymorphie etc. zu
tun sondern ist einfach nur eine Instanziierung.

bei Antwort benachrichtigen