Fragen zu OOP (Objektorientierte Programmierung) - Seite 4

 
VOLDEMAR:

Bitte erläutern Sie die Maßnahmen

nämlich

warum das Zeichen (:) und was bekommen wir damit?

Dies ist eine solche Initialisierung.
 

Worin besteht der Unterschied?

vr_trade trade;
//+------------------------------------------------------------------+
void OnTick()
  {
trade.Buy("EURUSD",0.01); // Пример открытия позиции возвращающей тиккет ордера.
  }
//+------------------------------------------------------------------+ 

и

vr_trade *trade;
//+------------------------------------------------------------------+
void OnInit()
{
trade = new vr_trade;
}
//+------------------------------------------------------------------+
void OnTick()
  {
trade.Buy("EURUSD",0.01); // Пример открытия позиции возвращающей тиккет ордера.
  }
//+------------------------------------------------------------------+ 
void OnDeinit(const int reason)
{
delete trade;
} 
 
VOLDEMAR:

Bitte erläutern Sie die Maßnahmen

nämlich

warum das Zeichen (:) und was bekommen wir damit?



gefolgt von einem Doppelpunkt, gefolgt von einer Initialisierungsliste
 
VOLDEMAR:

Worin besteht der Unterschied?

и



Unterschied bei der Verwaltung der Lebensdauer eines Objekts
 
stringo:

Der Unterschied liegt in der Möglichkeit, die Lebensdauer des Objekts zu kontrollieren

Ich verstehe, dass im Falle von new Sie das Objekt jederzeit löschen können, aber wenn ohne sie, das Objekt wird nur gelöscht werden, wenn die Funktion, in der das Objekt aufgerufen wird, beendet, richtig?
 
hoz:

Ich gehe davon aus, dass Sie im Falle von new das Objekt jederzeit löschen können, aber wenn Sie das nicht tun, wird das Objekt erst gelöscht, wenn die Funktion, in der das Objekt aufgerufen wird, beendet wird, richtig?


Ja
 
VOLDEMAR:

Empfehlen Sie bitte ein paar Lehrbücher ... Am einfachsten und nützlichsten ist Ihrer Meinung nach ...

http://rutracker.org/forum/viewtopic.php?t=4039549

http://rutracker.org/forum/viewtopic.php?t=4639528

 
Wie kann man nur eine Methode von einer Klasse erben?
 
VOLDEMAR:
Wie kann man nur eine Methode von einer Klasse erben?
Warum?
 

Jetzt habe ich meine Klasse umgestaltet

class vr_trade
  {
private:
   int               openorders(string sy,int typ,double lot,double price);
   string            tip(int typ);
   int               m_magic;
   int               m_slip;
public:
   int               Buy(string sy,double lot);
   int               Sel(string sy,double lot);
   int               BuyLimit(string sy,double lot,double price);
   int               SelLimit(string sy,double lot,double price);
   int               BuyStop(string sy,double lot,double price);
   int               SelStop(string sy,double lot,double price);
   void              MagSlip(int mag=-1,int slip=0);
   vr_MarketInfo    *Log;
                     vr_trade();
                    ~vr_trade();
  };
MqlTick st;
//+------------------------------------------------------------------+
vr_trade:: vr_trade()
  {
   Log=new vr_MarketInfo;
   MagSlip(-1,0);
  }

Und zusätzliche Vererbung ... (ich vermute, ich könnte mich irren) aus der Klasse vr_MarketInfo.

Die Klasse vr_MarketInfo liefert Informationen über Point, Digits für das Symbol und prüft das Lot auf Fehler und viele andere Dinge, die ich für die Arbeit benötige, einschließlich Logging in Excel und auf dem Chart

Bei der Verwendung einer Methode wie der obigen wird bei der Arbeit in Primer.Primer.Primer() eine Liste angegeben

Ich würde gerne etwas kürzeres machen...