005
27.03.2006, 13:21 Uhr
RHBaum
|
Zitat: |
Aber ich denke ich sollte ein overriding von = machen - nur geht das net mit dem default =?
|
du meinst, weil du mit deinen new / deletes durcheinander gekommen bist willst du den = operator ueberladen ? ^^ Nee das meinst du jetzt nich ernst oder ?
ok, ueberlegen wir mal was dein *tmpph = *(tmpnp->thePhone); macht:
derferenziert tmpph und weisst dem das derefernzierte tmpnp->thePhone zu ...
Deine Klasse Phone hat keine eigene version des = operators, also nimmt es die builtin version: sprich alle members werden kopiert ....
protected: unsigned phone_status_; Network *network_; char *name_;
Also alle zeiger werden einfach nur ausgetauscht.
also tmpph->network_ /tmpph->name_ und tmpnp->thePhone->network_ / tmpnp->thePhone->name_ zeigen nun auf den selben speicher ....
Zitat: |
is ja nur ein Übungsprogramm ...
|
Ich find es quasi genau so wichtig sich guten c++ Stil anzueignen. Wenn man einmal den pceudo c stil intus (code sieht aus wie sternenhimmel bei nacht, also viele viele ****) kriegt man den kaum raus ....
Woran erkennt man guten C++ Stil ? Dein programm ist klar strukturiert und leserlich, deine eigenen Klassen lassen sich da wo es sinn macht wie normale builtin variablen verwenden ....
C++: |
int main (int argc, char * const argv[]) { Network myNetwork: //Creating phones Phone p1(IS_IDLE | IS_ACTIVE, "test",myNetwork); // Register them to Network cout << "Main: " << p1 << endl; myNetwork.RegisterPhone("+431234", p1); // Do somthing ... PhoneList list = theNetwork.ListNumbers(); return 0; }
|
Wuerde ich beispielsweisse fuer besseren c++ stil halten ... Ich mein ueben mit new und delete, kein Thema ... schmeiss den aber gleich wieder weg ^^
dein problem iss ja nich das du ned allokieren kannst, sondern in deinem programm das du den ueberblick verlierst ^^ Zum beispiel sollt man sich immer expliziet nen kopf machen, ob man variablen besser besser kopiert oder doch referenziert ... performance versus sicherheit ... und performance immer dann den vorrang geben, wo es wirklich notzwendig ist ... Und saueber stil beim allokieren und deallokieren ist eben das man es dem leser deines Programmes so einfach wie moeglich macht, zu sehen, aha, da iss nen new, und da iss auch scho das delete zu. Viel mehr gibts da auch nich zu beachten (und natuerlich das man es nicht sinnlos einsetzt ^^).
Ciao ... Dieser Post wurde am 27.03.2006 um 13:22 Uhr von RHBaum editiert. |