OOP. Başvuru soruları - sayfa 2

 
Urain :

Yeni operatör , sınıfın bir örneğini oluşturur ve bir yapıcı çağrısı ile ilişkilendirilir. Bu, sözdiziminde yazılmıştır, bu nedenle başka türlü çağrılamaz.

Bu örnekten geldim:

 //+------------------------------------------------------------------+
//| Создание фигуры                                                  |
//+------------------------------------------------------------------+
void CTetrisField::NewShape()
  {
   m_ypos=HORZ_BORDER;
//--- случайным образом создаём одну из 7 возможных фигур
   int nshape= rand ()% 7 ;
   switch (nshape)
     {
       case 0 : m_shape= new CTetrisShape1; break ;
       case 1 : m_shape= new CTetrisShape2; break ;
       case 2 : m_shape= new CTetrisShape3; break ;
       case 3 : m_shape= new CTetrisShape4; break ;
       case 4 : m_shape= new CTetrisShape5; break ;
       case 5 : m_shape= new CTetrisShape6; break ;
       case 6 : m_shape= new CTetrisShape7; break ;
     }
Burada, kabaca konuşursak, parantez yoktur (kurucu çağrısı). Hala bir şey anlamamış olabilirim.
 
Urain :

Bu kod, çoklu kalıtımdan neredeyse hiç farklı değildir.

Aslında, C_C sınıfı, karşılık gelen işaretçiler aracılığıyla C_A ve C_B verilerine erişebilir.


Agregasyon denir.
 
Yedelkin :

Bu örnekten geldim:

Burada, kabaca konuşursak, parantez yoktur (kurucu çağrısı). Hala bir şey anlamamış olabilirim.

Neden hemen benim, benim için değil, merkez çamaşırhane için, parantez almadım :o)
 
Urain :
Neden hemen benim, benim için değil, merkez çamaşırhane için, parantez almadım :o)

Derleyicim parantezlerin yokluğuna yemin etmiyor ...

       case    50 : d_Control= new CControl_50; break ;

Genel olarak, soru aniden ortaya çıktı: doğru yol nedir? Yoksa parantez olup olmamasının bir önemi var mı?

 
Yedelkin :

Derleyicim parantezlerin yokluğuna yemin etmiyor ...

Genel olarak, soru aniden ortaya çıktı: doğru yol nedir? Yoksa parantez olup olmamasının bir önemi var mı?

Bu şekilde çalışıyorsa, bu daha çok bir sözdizimi birleştirme sorunudur. Ana şey, hızın etkilenmemesidir.

ZY Ve böylece genel olarak çalışır? Dürüst olmak gerekirse, kontrol etmedim, her zaman parantez içinde yazarım.

 
Urain :

Bu şekilde çalışıyorsa, bu daha çok bir sözdizimi birleştirme sorunudur. Ana şey, hızın etkilenmemesidir.

ZY Ve böylece genel olarak çalışır? Dürüst olmak gerekirse, kontrol etmedim, her zaman parantez içinde yazarım.

Buraya kadar sadece derleme sonuçlarından bahsedebilirim. Kodun gerçek işleyişini kontrol etmeden önce daha kat edilmesi gereken uzun bir yol var.
 

MQL5'te dinamik olarak sınıf nesneleri oluşturmanın açıklamasını okumadım, ancak C++'da hem parantezsiz (standart kurucu çağrılır) hem de parantezli (parantez içindeki parametrelere bağlı olarak kurucu çağrılır) mümkündür. Misal:


class CExample
{
    int param;
public:
    CExample();
    CExample(int x);
    ~CExample();
}

CExample::CExample(int x)
{
    param = x;
}

//..........вызов..............
//..где-то в тексте программы..

   CExample *ex1 = new CExample;         //создание с конструктором CExample();
   CExample *ex1 = new CExample();       //создание с конструктором CExample();
   CExample *ex1 = new CExample(value);  //создание с конструктором CExample(int x);

Документация по MQL5: Основы языка / Типы данных / Структуры и классы
Документация по MQL5: Основы языка / Типы данных / Структуры и классы
  • www.mql5.com
Основы языка / Типы данных / Структуры и классы - Документация по MQL5
 
mql5'te parametreler bir kurucuya iletilemez.
 
Vigor :
mql5'te parametreler bir kurucuya iletilemez.

Açıklığa kavuşturalım "mql5'te, parametreleri bir kurucuya iletmek henüz mümkün değil."
 
PiramidaR :

MQL5'te dinamik olarak sınıf nesneleri oluşturmanın açıklamasını okumadım, ancak C++'da hem parantezsiz (standart kurucu çağrılır) hem de parantezli (parantez içindeki parametrelere bağlı olarak kurucu çağrılır) mümkündür. Misal:

Anlaşıldı, basit ve anlaşılır açıklama için teşekkürler. Parantezlerin olası parametreler için olduğu ortaya çıktı.

Ve MQL5'te dinamik sınıf nesneleri yaratmanın açıklaması çok kısadır:

MQL5 Başvurusu / Dil Temelleri / Operatörler / Yeni Nesne Oluşturma Operatörü

MQL5 Referansı / Dil Temelleri / Veri Tipleri / Nesne İşaretçileri