Fragen zu OOP in MQL5 - Seite 85

 
Es ist nicht das erste Mal, dass ich mich bei dem Gedanken ertappe, dass es in MQL besser ist, OOP nur dann zu verwenden, wenn es absolut notwendig ist und nur in einem bestimmten Teil des Codes.
 
Pavel Verveyko:
Es ist nicht das erste Mal, dass ich mich dabei ertappe, wie ich denke, dass es in MQL besser ist, OOP nur bei dringendem Bedarf und nur in einem bestimmten Codeabschnitt zu verwenden.
Wer um alles in der Welt hat Sie auf eine solch dumme Idee gebracht? Wenn man keine Katzen mag, kann man sie auch nicht kochen))))
 

Ich habe irgendwo gelesen und im Forum ist ein Beispiel mit einer solchen Konstruktion aufgetaucht

delete &this;

Kann jemand ein einfaches Beispiel mit diesem Thema machen?

Mich interessiert, was dieses Löschen &das Löschen bedeutet;

 
Igor Makanu:

Ich habe irgendwo gelesen und im Forum ist ein Beispiel mit einer solchen Konstruktion aufgetaucht

Kann jemand ein einfaches Beispiel mit diesem Thema machen?

Ich bin daran interessiert, was dieses Löschen &das Löschen bedeutet;

Es löscht sich selbst)))

 
Vladimir Simakov:

Es entfernt sich von selbst)))

das macht Sinn

aber ich vermute, dass der Sinn der Sache darin besteht, sie mit statischen Methoden zu verwenden

Ich muss es testen, weiß aber nicht wie, deshalb habe ich gefragt


UPD: googelte dieses Thema gestern, viele Erwähnungen von privaten destructor, müssen auch zu denken, was es tun kann

 
Igor Makanu:

1) aber ich vermute, dass der Sinn von "delete &this;" - Verwendung mit statischen Methoden
2) gestern dieses Thema gegoogelt, viele Verweise auf privaten Destruktor, müssen auch denken, was es bieten kann

1) Von statischen Methoden aus ist der Zugriff auf diese untersagt.
Wo ist "delete &this;"? - https://stackoverflow.com/questions/447379/what-is-the-use-of-delete-this

2) Der private Destruktor verbietet die Erstellung eines Objekts auf dem Stack, aber ein Objekt kann immer noch durch den new-Operator erstellt werden, diesmal auf dem Heap:

class A{
   ~A(){printf(__FUNCSIG__);}
public:
    void Delete(){
        delete &this;
    }
};

void OnStart() {
   A* a_ptr = new A();
   a_ptr.Delete();
}

Hier ist eine weitere Verwendung von delete &this.

 
Sergey Dzyublik:

1) Von statischen Methoden aus ist der Zugriff auf diese untersagt.
Wo müssen "delete &this;" - https://stackoverflow.com/questions/447379/what-is-the-use-of-delete-this

2) Ein privater Destruktor verbietet die Erstellung eines Objekts auf dem Stack, aber ein Objekt kann immer noch durch den new-Operator erstellt werden, diesmal auf dem Heap:

Hier ist eine weitere Verwendung von delete &this.

Man kann immer etwas mit etwas anfangen. Aber was ist der Sinn?

Sie sollten einen Namen erfinden, es als Entwurfsmuster deklarieren... und das war's. Es ist so cool, einen Haufen Code zu schreiben, anstatt einfach nur "etwas zu löschen".

 
Ein privater Zerstörer schützt Ihre Entwicklungen vor Dilettanten. Schließlich kann man OOP mit ihnen nur auf eine ausgereifte Weise verwenden - mit new und delete. Übrigens, haben Sie sich schon einen Namen für das "Muster" überlegt?
 
Dmitry Fedoseev:
Sie haben wirklich einen sehr passenden Spitznamen ))
 
Igor Makanu:

Ich habe irgendwo gelesen und im Forum ist ein Beispiel mit einer solchen Konstruktion aufgetaucht

Kann jemand ein einfaches Beispiel mit diesem Thema machen?

Ich bin daran interessiert, was diese & jene löschen;

Dies ist ein Zeiger auf das aktuelle Objekt.

Normalerweise wird das delete this-Konstrukt verwendet, wenn ein Objekt durch new erstellt wird, aber die Verantwortung für das Löschen liegt bei dem Objekt selbst. In diesem Fall ruft das Objekt, wenn es nicht mehr benötigt wird, die Deinitialisierungsfunktion auf, mit der es sich selbst wie folgt löscht.

Meiner Meinung nach ist dies eine extrem gefährliche Praxis, die nur im Falle von Smartpoints akzeptabel ist, die Verweise auf das Objekt selbst zählen und dann, wenn die Anzahl der Verweise Null wird, sich selbst löschen können. Aber selbst in diesem Fall, so scheint es mir, gibt es Raum für schwer zu findende Speicherleckfehler.

Meiner Meinung nach sollte die Verantwortung für die Löschung bei demselben Objekt liegen, das sie erstellt hat. Es kann das Muster der Objektfabrik verwenden, wenn es erstellt wird, aber das Löschen sollte immer noch in der Verantwortung des Objekts liegen, das das neue Objekt erstellt hat.

Grund der Beschwerde: