" OOP " konusu, "iyi ya da değil" gibi bir fikir alışverişi ile sonuçlandı. Daha sıradan sorulara cevap istiyorum.
Soru. C ++ ders kitabında, bir sınıfın bir örneğinin aynı anda iki farklı ana sınıfın çocuğu yapılabileceğinden bahsettim, örneğin
Veya bunun gibi bir şey (kaynağı bulamıyorum). Peki ya bu MQL5'te? Bir sınıfın aynı anda iki farklı ebeveyn sınıfın çocuğu olduğunu söylemek mümkün müdür? sözdizimi nedir?
El Kitabındaki "Çoğul kalıtım yoktur" ifadesi böyle bir durumla ilgili değil mi?
MQL5'te çoklu kalıtım desteklenmez, ancak bunun gibi bir şeyi uygulayabileceğiniz bir nesne işaretçisini geçirmek için ilginç bir mekanizma vardır.
OOP ile kodu yapılandırmanın çok uygun olduğu ortaya çıktı (banalite için üzgünüm). Yöntemleri birer birer alıp çalkalıyorsunuz. Çok verimli ve görsel. Ancak soru ortaya çıktı, bu tür çoklu sarma, işlemci tarafından kod işleme hızını etkiler mi? Spesifik olarak, bu iki kod seçeneği arasında yürütme hızında herhangi bir fark var mı:
double ddd= 0.0 ; //первый вариант кода, инициализация без применения функций/методов double ddd; //второй вариант кода, инициализация с применением функций/методов void function( double a) { a= 0.0 ; } ... function(ddd);
Veya derleme aşamasında, kod insan dilinden makine diline dönüştürülür, böylece bir bilgisayar için bu seçeneklerin ikisi de işlem hızı açısından farklı olmaz mı?
MQL5 çoklu kalıtımı desteklemiyor...
Onlar. "Çoklu kalıtım" - bu ebeveynlerin çoğulluğu mu?
Onlar. "Çoklu kalıtım" - bu ebeveynlerin çoğulluğu mu?
Evet, bir ebeveyne sahip olabilen bir sınıftır, basamaklamak mümkündür, ancak iki ebeveyn ve mql5 olamaz.
Prensip olarak, kalıtım yerine sınıfın kendisinde "type as parent" sınıfını çağırabilir ve "type as parent" verilerine onun işaretçisi aracılığıyla erişebilirsiniz.
Evet, bir ebeveyne sahip olabilen bir sınıftır, basamaklamak mümkündür, ancak iki ebeveyn ve mql5 olamaz.
Bu kod, çoklu kalıtımdan neredeyse hiç farklı değildir.
class C_A { public : C_A( void ){}; ~C_A( void ){}; double a; }; //+------------------------------------------------------------------+ class C_B { public : C_B( void ){}; ~C_B( void ){}; double b; }; //+------------------------------------------------------------------+ class C_C { public : C_A *ua; C_B *ub; C_C( void ){ua= new C_A();ub= new C_B();}; ~C_C( void ){ delete ua; delete ub;}; }; //+------------------------------------------------------------------+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.
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.Güzel! Yapıcıda dış sınıfın bir örneğini yaratmayı düşünmezdim. Yardım için teşekkürler!
Ek. Ama bu çizgide
C_C( void ){ua= new C_A();ub= new C_B();};
yeni operatör, C_A sınıfının C_A() yapıcısına uygulanır.
Referans kitabından, new operatörünün işleneninin, yapıcısı değil, sınıfın kendisi olduğunu anladım. Hangi özellikler olabilir?
Bu arada, bir süre sonra parametreler yapıcılar için çalışacak ve bu da geliştiricilerin hayatını büyük ölçüde kolaylaştıracak.
Güzel! Yapıcıda dış sınıfın bir örneğini oluşturmayı düşünmezdim. Yardım için teşekkürler!
Ek. Ama bu çizgide
yeni operatör, C_A sınıfının C_A() yapıcısına uygulanır.
Dizinden, yeni operatörün işleneninin, yapıcısı değil, sınıfın kendisi olduğunu anladım. Hangi özellikler olabilir?
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.
Statik bir reklamda her şey otomatik olarak gerçekleşir.
Bu arada, aynı zamanda çalışacak ve otomatik olarak yok edilecektir.
class C_C { public : C_A ua; C_B ub; C_C( void ){}; ~C_C( void ){}; }; //+------------------------------------------------------------------+
![Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new](/i/community/logo_mql5_small.png)
- www.mql5.com
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
" OOP " konusu, "iyi ya da değil" gibi bir fikir alışverişi ile sonuçlandı. Daha sıradan sorulara cevap istiyorum.
Soru. C ++ ders kitabında, bir sınıfın bir örneğinin aynı anda iki farklı ana sınıfın çocuğu yapılabileceğinden bahsettim, örneğin
Veya bunun gibi bir şey (kaynağı bulamıyorum). Peki ya bu MQL5'te? Bir sınıfın aynı anda iki farklı ebeveyn sınıfın çocuğu olduğunu söylemek mümkün müdür? sözdizimi nedir?
El Kitabındaki "Çoğul kalıtım yoktur" ifadesi böyle bir durumla ilgili değil mi?