Das EOP für Schulkinder. - Seite 14

 
Alexey Viktorov:

Noch eine Frage: Was ist der Unterschied zwischen der Deklaration einer Variablen, dem Erhalten/Erstellen eines Zeigers und dem Erstellen einer Objektinstanz? Es geht nicht um den Unterschied, sondern darum, in welchen Fällen es besser ist, es zu verwenden. Es reicht zum Beispiel aus, eine Variable für die Eröffnung einer Position zu deklarieren.

Und in welchen Fällen es besser ist, den Zeiger zu verwenden, und in welchen Fällen wir auf die Objektinstanz nicht verzichten können.

Was sind die Vor- und Nachteile der einen oder anderen Methode?

Also, rein in die Eingeweide dieser Klasse, es ist im Käse erhältlich. Dort wird nichts Wichtiges geschaffen, nur eine Reihe von Methoden.

 
Alexey Viktorov:

Um zu verstehen, was man wählen sollte, wurde die Frage gestellt. Nicht für einen Wettbewerb von Medizinmännern.

Ich bin jetzt nicht nüchtern, nicht einmal sehr nüchtern, aber ich werde es versuchen. Wenn Zuverlässigkeit Ihr oberstes Gebot ist, dann ist das RAII-Prinzip alles, was Sie tun können (Sie deklarieren ein Objekt, der Compiler tötet es, wenn es den Sichtbarkeitsbereich verlässt). Wenn man Code-Effizienz will, geht alles in Richtung Zeiger. Es liegt also an jeder Aufgabe, darüber nachzudenken, es gibt keine Universallösung.
 
Alexey Viktorov:

Um zu verstehen, was man wählen sollte, wurde die Frage gestellt. Nicht für einen Wettbewerb von Medizinmännern.

So wie ich es verstehe.
Wenn ein Objekt pro Stapel erstellt wird, dann nur für solche Objekte, die nicht lange leben und die Geschwindigkeit benötigen , um ein Objekt zu erstellen, zum Beispiel eine Klasse für die Arbeit mit Anfragen.
Objekte auf dem Heap sollten für langlebige Objekte erstellt werden, die nicht besonders schnell sein müssen, oder die wichtig sind, um sie nicht zu verlieren.
Manchmal, z. B. in VS, lässt der Compiler die Wahl eines Stacks nicht zu und bietet nur einen Heap an, d. h. er sagt Ihnen, was für dieses Objekt am besten geeignet ist.

 
Roman:

So wie ich es verstehe.
Wenn ein Objekt pro Stapel erstellt wird, dann nur für solche Objekte, die nicht lange leben und die Geschwindigkeit der Objekterstellung benötigen, z. B. eine Klasse für die Arbeit mit Anfragen.
Objekte auf dem Heap sollten für langlebige Objekte erstellt werden, die nicht besonders schnell sein müssen, oder die wichtig sind, um sie nicht zu verlieren.
Manchmal, z. B. in VS, lässt der Compiler die Wahl eines Stacks nicht zu und bietet nur einen Heap an, d. h. er sagt Ihnen, was für dieses Objekt am besten geeignet ist.

Nein. Ich muss gestehen, dass auch ich mich vor einiger Zeit geirrt habe. Wenn ein Objekt auf dem Stack erstellt wird, wird es ohnehin auf dem Heap alloziert, nur der Zeiger wird auf dem Stack erstellt. Wenn CObg obj deklariert wird, wird sein Destruktor garantiert aufgerufen, wenn obj den Bereich verlässt.
 
Vladimir Simakov:
Nein, das tue ich nicht. Es tut mir leid, ich habe mich auch einmal geirrt. Wenn ein Objekt auf dem Stack erstellt wird, wird es ohnehin auf dem Heap alloziert, nur der Zeiger wird auf dem Stack erstellt. Es ist nur so, dass bei der Deklaration von CObg obj sein Destruktor garantiert aufgerufen wird, wenn obj seinen Sichtbarkeitsbereich verlässt.

Vielleicht wird es auf dem Heap zugewiesen, ich weiß es nicht ))
Viele Leute behaupten jedoch, dass das Objekt auf dem Stapel schneller erstellt wird.
Anscheinend irren sich alle darüber, ich weiß es nicht ))

 
Roman:

Vielleicht wird es dem Stapel zugewiesen, ich weiß es nicht ))
Aber viele Leute behaupten, dass das Objekt auf dem Stack schneller erstellt wird.
Anscheinend irren sich alle darüber, ich weiß es nicht ))

Was hält Sie davon ab, im Zweifelsfall nachzufragen? Warum sollte man sich weiter darüber lustig machen, wenn es bereits getestet und bewiesen wurde?

 
Dmitry Fedoseev:

Was hält Sie davon ab, im Zweifelsfall nachzufragen? Warum weiter herumalbern, wenn es bereits getestet und bewiesen wurde?

Ich habe keine Zweifel )) Aber auch, um zu prüfen, ob es nicht irgendwie dazu gekommen ist.
Sie haben gerade erst darüber geschrieben. Wenn es also bereits getestet und bewiesen wurde, können wir Ihnen als alter Hase in Sachen Codierung vertrauen).
Ich mache mir eigentlich keine Gedanken über diesen Unterschied, Stapel, Haufen, aber manchmal schon.

 

Leute, ich bin ein Rückwärtsgewandter, aber es gibt einen Stapel (wenn der erste gespeicherte Wert zuletzt abgerufen wird) und eine Warteschlange (wenn der erste Wert zuerst eintrifft, zuerst ausläuft).

Was ist ein Haufen?

 
Alexey Viktorov:

Es geht also darum, zu verstehen, was man wählen soll, das war die Frage. Nicht für ein Quiz der Assistenten.

Ja, ich vergaß hinzuzufügen, dass es empfehlenswert ist, mehrere Objekte in umgekehrter Reihenfolge ihrer Erstellung zu löschen, wenn Sie mehrere Objekte auf einem Heap erstellen.

 
Roman:

Ja, ich vergaß hinzuzufügen, dass, wenn mehrere Objekte auf dem Heap erstellt werden, es empfohlen wird, sie in umgekehrter Reihenfolge ihrer Erstellung zu entfernen.

Der Heap ist also ein Stapel.

Grund der Beschwerde: