Klasseninstanz "direkt" aufrufen
-
Hallo!
Folgende Klassenfragmente seien gegeben:
class Item {}; class A { private: int m_n; Item m_Item; public: void Start(); }; class B { private: const int m_n; public: B(const int & n); void EditItem(); };Nun ist in A::Start folgender Code:
// Version 1 void A::Start() { B(this->m_n).EditItem(this->m_Item); }// Version 2 void A::Start() { B b(this->m_n); b.EditItem(this->m_Item); }Ist hier semantisch ein Unterschied zwischen Version 1 und 2 bis auf dass die Iinstanz "b" bis zum Ende der Methode A::Start existiert? Tun also beide exakt das Gleiche?
lg
Hannes
-
Hannes1 schrieb:
Ist hier semantisch ein Unterschied
Eben, vielleicht handhabt der Compiler die Speicherverwaltung der beiden Varianten etwas anders aber sonst eigentlich nicht.
-
EOutOfResources schrieb:
Eben, vielleicht handhabt der Compiler die Speicherverwaltung der beiden Varianten etwas anders aber sonst eigentlich nicht.
Als die eigentliche Änderung von Item ist aber identisch. Ok.
-
Sollte es nicht
... void EditItem(Item&); ...lauten?
-
muggabatscher schrieb:
Sollte es nicht ... lauten?
Doch, du hast recht. Aber darum geht es hier nicht.
-
muggabatscher schrieb:
Sollte es nicht ... lauten?
Natürlich, da habe ich mich wohl versehen.
