MQL5 Derleyici, bir sınıf ile ona yönelik bir işaretçi arasında ayrım yapmaz - sayfa 3
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Bingo!
Tam olarak bingo değil. Basit nesneler için = operatörüyle atama çalışır. Kesinlikle bug değil.
...
Numara. Hoparlörden otomatik olduğunda, bu atanan bir işaretçi değildir, ancak bir nesne kopyalanır - alanlarının değerleri, ancak yalnızca basit nesnelerle.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
MQL5 Derleyici, bir sınıf ile ona yönelik bir işaretçi arasında ayrım yapmaz
SemenTalonov , 2019.01.10 04:18
Ne zamandan beri tanımlanmışlar (geliştiricilere soru)
ve nasıl çalışırlar? Aşağıdaki derlenmiş kod çılgın görünüyor
Ve burada durum net değil
Tam olarak bingo değil. Basit nesneler için = operatörüyle atama çalışır. Kesinlikle bug değil.
Al işte, en önemli şey bu.
Şahsen, nesneler basit olsa bile, bu operatör açıkça tanımlanmadıkça nesneler üzerinde bir atama operatörü kullanabileceğinizi düşünmüyorum. Yine de bir şekilde basit yapıların atanması konusunda anlaşmak mümkündür. Ancak, yapıcının zorunlu olarak (en azından dolaylı olarak) çağrıldığı sınıflar, yalnızca açıkça tanımlanmış operatörler tarafından atanabilir.
Bence bu, yeni başlayanlar için hayatı kolaylaştırmak için yapıldı.
Al işte, en önemli şey bu.
Şahsen, nesneler basit olsa bile, bu operatör açıkça tanımlanmadıkça nesneler üzerinde bir atama operatörü kullanabileceğinizi düşünmüyorum. Yine de bir şekilde basit yapıların atanması konusunda anlaşmak mümkündür. Ancak, yapıcının zorunlu olarak (en azından dolaylı olarak) çağrıldığı sınıflar, yalnızca açıkça tanımlanmış operatörler tarafından atanabilir.
Bence bu, yeni başlayanlar için hayatı kolaylaştırmak için yapıldı.
Ve karmaşık olanlar uygundur - bu olmadan, örneğin MqlTradeRequest'i iade etmek imkansızdır. Ve yapılarda, yapıcı da zorunlu olarak çağrılır.
MQL'nin çok kırpılmış bir C# olduğu bir sürüm var. Buna dayanarak, bu durumda MQL derleyicisinin davranışı netleşir. Çünkü C#'da sınıflar her zaman öbek üzerinde tahsis edilir, yani:
Şimdi m_A dizisiyle ilgilenelim. m_A bir sınıflar dizisi olduğundan ve sınıflar her zaman öbek üzerinde tahsis edildiğinden, m_A dizisinin bir işaretçiler dizisi mi yoksa bir nesneler dizisi mi olduğunu belirtmeye gerek yoktur, çünkü sınıflar için yalnızca ilk seçenek her zaman çalışır. m_A her zaman bir işaretçi dizisi olduğundan, MQL'nin bir hoşgörüsü vardır: referans türlerini mi yoksa değer türlerini mi depoladığını belirtmemek mümkündür. Dolayısıyla A* m_A[2] == A m_A[2]. Amin.
MQL'nin çok kırpılmış bir C# olduğu bir sürüm var. Buna dayanarak, bu durumda MQL derleyicisinin davranışı netleşir. Çünkü C#'da sınıflar her zaman öbek üzerinde tahsis edilir, yani:
Şimdi m_A dizisiyle ilgilenelim. m_A bir sınıflar dizisi olduğundan ve sınıflar her zaman öbek üzerinde tahsis edildiğinden, m_A dizisinin bir işaretçiler dizisi mi yoksa bir nesneler dizisi mi olduğunu belirtmeye gerek yoktur, çünkü sınıflar için yalnızca ilk seçenek her zaman çalışır. m_A her zaman bir işaretçi dizisi olduğundan, MQL'nin bir hoşgörüsü vardır: referans türlerini mi yoksa değer türlerini mi depoladığını belirtmemek mümkündür. Dolayısıyla A* m_A[2] == A m_A[2]. Amin.
Yanlış sonuç. m_A, işaretçiler değil, bir nesneler dizisidir. Ve bu nesneler tamamen yok edilir. Yeni A yok edilmez.
Yanlış sonuç. m_A, işaretçiler değil, bir nesneler dizisidir. Ve bu nesneler tamamen yok edilir. Yeni A yok edilmez.
İyi örnek. hm. O zaman daha fazla düşüneceğiz.
haha)) Aslında buna şok oldum
haha)) Aslında buna şok oldum
Ve yanlış olan ne? Bir durumda bir nesne, diğer durumda bir işaretçi.