Hallo, Moderatoren! Ich habe eine ganz normale Frage gestellt, auf die ich unhöflich reagiert habe. Wenn Sie sie verreißen, verreißen Sie auch die Betreiber und den Unsinn mit den Hinweisen.
Und lassen Sie Sokolov auf keinen Fall in OOP-Themen auftauchen, bei solchen Befürwortern von OOP im Forum wird er qualvoll sterben.
Hallo, Moderatoren! Ich habe eine normale Frage gestellt, auf die ich unhöflich reagiert habe. Wenn Sie sie also niedermachen, sollten Sie auch den Unsinn über die Betreiber und die Wegweiser niedermachen.
Und lassen Sie Sokolov gar nicht erst in OOP-Themen auftauchen, mit solchen Verfechtern von OOP wird das Forum qualvoll aussterben.
Haben Sie irgendetwas über Ihren Standpunkt geklärt? Nein.
Утилита Graphics editor MT4 предназначена для создания и редактирования графических объектов типа: Удобный и интуитивно понятный интерфейс позволяет быстро и эффективно редактировать основные параметры графических объектов и сразу же видеть результат изменений. Входные параметры Languages - русский/английский; base_corner - угол привязки...
Das Überschreiben von Operatoren ist nichts weiter als syntaktischer Zucker. Es ist besser, diese Praxis aufzugeben und statt des Zuweisungsoperators die Methode Copy() oder Clone() zu verwenden - einfach und klar:
class CMyClass
{
private:
int m_state;
public:
CMyClass* Copy()
{
CMyClass* obj = new CMyClass();
obj.m_state = state;
return obj;
}
}
Vasily, ich danke Ihnen für Ihre Meinung. Ich stimme Ihrem Ansatz zu, mit einem kleinen Zusatz:
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//--- Объект 1
CMyClass my_obj1;
my_obj1.State(5);
PrintFormat("Состояние Объекта 1: %d",my_obj1.State());
//--- Объект 2 - методом клонирования
CMyClass *ptr_my_obj2;
ptr_my_obj2=my_obj1.Clone();
if(CheckPointer(ptr_my_obj2)==POINTER_DYNAMIC)
PrintFormat("Состояние Объекта 2: %d",ptr_my_obj2.State());
//--- Объект 3 - методом копирования
CMyClass my_obj3;
my_obj3.State(3);
PrintFormat("Состояние Объекта 3: %d",my_obj3.State());
if(my_obj1.Copy(my_obj3))
PrintFormat("Состояние Объекта 1: %d",my_obj1.State());
}
Standard-Vergleichszeichen sind besser hinter Zeigern aufgehoben.
Artyom Trishkin: Haben Sie etwas über Ihren Standpunkt erklärt? Nein.
Ich habe eine einfache Streitigkeit gelöscht.
Ich werde nicht auf die Provokationen der Hasser eingehen, die auch noch Analphabeten sind, sondern meinen Standpunkt darlegen:
In normalen Programmiersprachen(nicht in C++)ist das Überladen des '='-Operators verboten. Ich schlage vor, dass vor der Verwendung solcher Überladungen, insbesondere von Zuweisungsoperatoren, diejenigen, die dies wünschen, gründlich darüber nachdenken, warum die dummen Architekten dieser dummen Sprachen dies tun.
Konnte nicht widerstehen, persönlich zu andrei: Mensch, blamier dich doch nicht so. Sie sagen so dummes Zeug: erst über FP, jetzt über die Betreiber. Möchte hayterite - willkommen: geben Hinweise auf maßgebliche Quellen, zu rechtfertigen, etc. Was Sie jetzt tun, ist ein tollwütiger und vor allem völlig ungebildeter Hass. Sie scheinen ein Programmierer zu sein, sogar ein richtiger - es ist schon beschämend, so etwas zu schreiben.
Artem, du irrst dich. Was kann man ohne Mädchen machen? - Die Mädchen gehören alle zu uns :-))
Aber im Ernst, ich möchte Folgendes diskutieren. Es gibt eine Klasse, in der der Kopierkonstruktor geschrieben und der Zuweisungsoperator außer Kraft gesetzt wird. Frage. Wann sollten und müssen sie anders sein?
Der Compiler selbst erstellt einen einfachen Kopierkonstruktor, der einfach alle Mitglieder der Klasse oder Struktur kopiert.
Wenn Sie möchten, dass während des Kopierens andere Aktionen ausgeführt werden, können Sie einen eigenen Kopierkonstruktor definieren
und Zuweisungsoperator.
Der Zuweisungsoperator wird für ein bestehendes Objekt aufgerufen, muss also zunächst prüfen, ob die Zuweisung
selbst, gibt dann gegebenenfalls das vorhandene Objekt frei und tut dann das Gleiche wie der Konstruktor.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Wohin geht die Reise?
Prüfen Sie Ihre Post.
Hallo, Moderatoren! Ich habe eine ganz normale Frage gestellt, auf die ich unhöflich reagiert habe. Wenn Sie sie verreißen, verreißen Sie auch die Betreiber und den Unsinn mit den Hinweisen.
Und lassen Sie Sokolov auf keinen Fall in OOP-Themen auftauchen, bei solchen Befürwortern von OOP im Forum wird er qualvoll sterben.
Hallo, Moderatoren! Ich habe eine normale Frage gestellt, auf die ich unhöflich reagiert habe. Wenn Sie sie also niedermachen, sollten Sie auch den Unsinn über die Betreiber und die Wegweiser niedermachen.
Und lassen Sie Sokolov gar nicht erst in OOP-Themen auftauchen, mit solchen Verfechtern von OOP wird das Forum qualvoll aussterben.
Ein gutes Beispiel für das Thema OOP.
Haben Sie irgendetwas über Ihren Standpunkt geklärt? Nein.
Das Überschreiben von Operatoren ist nichts weiter als syntaktischer Zucker. Es ist besser, diese Praxis aufzugeben und statt des Zuweisungsoperators die Methode Copy() oder Clone() zu verwenden - einfach und klar:
Vasily, ich danke Ihnen für Ihre Meinung. Ich stimme Ihrem Ansatz zu, mit einem kleinen Zusatz:
Skript überprüfen:
Standard-Vergleichszeichen sind besser hinter Zeigern aufgehoben.
Was meinen Sie mit Zeigern? In diesem Sinne?
Oh, mein...
Haben Sie etwas über Ihren Standpunkt erklärt? Nein.
Ich werde nicht auf die Provokationen der Hasser eingehen, die auch noch Analphabeten sind, sondern meinen Standpunkt darlegen:
In normalen Programmiersprachen(nicht in C++)ist das Überladen des '='-Operators verboten. Ich schlage vor, dass vor der Verwendung solcher Überladungen, insbesondere von Zuweisungsoperatoren, diejenigen, die dies wünschen, gründlich darüber nachdenken, warum die dummen Architekten dieser dummen Sprachen dies tun.
Konnte nicht widerstehen, persönlich zu andrei: Mensch, blamier dich doch nicht so. Sie sagen so dummes Zeug: erst über FP, jetzt über die Betreiber. Möchte hayterite - willkommen: geben Hinweise auf maßgebliche Quellen, zu rechtfertigen, etc. Was Sie jetzt tun, ist ein tollwütiger und vor allem völlig ungebildeter Hass. Sie scheinen ein Programmierer zu sein, sogar ein richtiger - es ist schon beschämend, so etwas zu schreiben.
Artem, du irrst dich. Was kann man ohne Mädchen machen? - Die Mädchen gehören alle zu uns :-))
Aber im Ernst, ich möchte Folgendes diskutieren. Es gibt eine Klasse, in der der Kopierkonstruktor geschrieben und der Zuweisungsoperator außer Kraft gesetzt wird. Frage. Wann sollten und müssen sie anders sein?
Der Compiler selbst erstellt einen einfachen Kopierkonstruktor, der einfach alle Mitglieder der Klasse oder Struktur kopiert.
Wenn Sie möchten, dass während des Kopierens andere Aktionen ausgeführt werden, können Sie einen eigenen Kopierkonstruktor definieren
und Zuweisungsoperator.
Der Zuweisungsoperator wird für ein bestehendes Objekt aufgerufen, muss also zunächst prüfen, ob die Zuweisung
selbst, gibt dann gegebenenfalls das vorhandene Objekt frei und tut dann das Gleiche wie der Konstruktor.