Höyükte OOP hakkında konuşun - sayfa 16

 
Vasiliy Sokolov :

Normal programlama dillerinde ( C++ değil ) '=' operatörünün aşırı yüklenmesi yasaktır .

Normal diliniz keskin mi? Ayrıca tanıdığın tek kişi? Ve bu çok kötü, aksi takdirde "arayüzler miras değildir" gibi cümleleri kesmezdim.

Yani bir operatör = var , şeker gibi değil, operatör olarak sayın. ve MQL'de - otomatik olarak oluşturulur, sayın!

Ve MQL'deki kopya oluşturucunun sizin yazdıklarınızdan çok daha kullanışlı olduğu gerçeğinden bahsetmeye bile değmez. Krch, birkaç yıl önce bir çaylak olarak kaldı ve kaldı. ChSV Deniska gibi büyüdü

 
Комбинатор :

... ChSV, Denis gibi büyüdü

Beni ayrıntılarda yakalayamazsınız, bu yüzden artık forumun geri kalanına yayıldınız. Aşağı ve alçak.

(not: üçüncü şahısta ve küçük bir harfle başkaları var, yani saygısız ve "hepiniz burada kimse değilsiniz")

 
Vasiliy Sokolov :

Normal programlama dillerinde ( C++ değil ) '=' operatörünün aşırı yüklenmesi yasaktır .

Özellikle şablonu yaygın olarak kullandığımda, bu operatörü aşırı yükleme olasılığının olması benim için çok uygun. Ve diğer birçok durumda aşırı yüklenirim.

Ve bazılarında , operatörün aşırı yüklenmesi neredeyse tamamen yasaktır, çünkü. oldukça haklı bir şekilde orada bir antipattern olarak kabul edilir. Böyle bir aşırı yüklenmeyi, özellikle atama operatörünü kullanmadan önce, bu aptal dillerin bu aptal mimarlarının bunu neden yaptığını düşünmenin iyi olduğunu öneriyorum.

Operatörleri kullanmanın klasik bir örneği karmaşık sayılar ve matrislerdir. Yanlış bir şey görmüyorum. Sürekli ifadeler yazıyorum çünkü kod artık hantal değil ve mantık hemen görülüyor.


protozoa

 struct MQLTICK : public MqlTick
{
   bool operator >( const double Price ) const
  {
     return ( this .bid > Price);
  }

   bool operator <( const double Price ) const
  {
     return ( this .ask < Price);
  }
};
 

Vasiliy Sokolov ve Schemer , lütfen küfür etmeyi bırakın.

Aksi takdirde Volchansky'nin srach provokatörlüğü nedeniyle yasaklanması gerekecek :)

 
Vasiliy Sokolov :

Beni ayrıntılarda yakalayamazsın

özelliklerden yoksun musun? )) bir atama ile keskin bir kod yazmak için? veya kopya oluşturucunun nasıl yazıldığını gösterin? veya atama operatörüne sahip dilleri listeler misiniz? Ayrıntıların eksikliğinden bahsetmek ve bana karşı yanlış suçlamalarda bulunmak, saçma sapan konuştuğunu kabul etmekten çok daha kolay
 
Rashid Umarov :

Aksi takdirde Volchansky'nin srach provokatörlüğü nedeniyle yasaklanması gerekecek :)

iyi hayır. O zaman hikayeleri kim zehirleyecek? kışkırtıcı olarak benden daha iyi

 
Vasiliy Sokolov :

Nefret edenlerin, dahası okuma yazma bilmeyenlerin kışkırtmalarına boyun eğmeyeceğim, bunun yerine kendi bakış açımı açıklayacağım:

Normal programlama dillerinde ( C++ değil ) '=' operatörünün aşırı yüklenmesi yasaktır . Ve bazılarında , operatörün aşırı yüklenmesi neredeyse tamamen yasaktır, çünkü. oldukça haklı bir şekilde orada bir antipattern olarak kabul edilir. Böyle bir aşırı yüklenmeyi, özellikle atama operatörünü kullanmadan önce, bu aptal dillerin bu aptal mimarlarının bunu neden yaptığını düşünmenin iyi olduğunu öneriyorum.

Peki, neden bu "normal programlama dilleri"?

Atama operatörünü aşırı yüklemek birçok durumda çok uygundur. Klasik bir örnek "akıllı işaretçiler" dir. Atama operatörü yalnızca işaretçiyi kopyalamakla kalmamalı, aynı zamanda AddRef() işlevini de yapmalıdır - aşırı yükleme ile tüm bunlar şeffaf bir şekilde yapılır.

Neden uygun? Ancak, nesneleri tamamen değil, işaretçileri kopyalamak çok daha mantıklı olduğu için. (Bu arada, göstergelerdeki dizilere işaretçi sağlamayan geliştiricileri tekrar suçluyorum ve tüm verileri kendi nesnenize kopyalamanız gerekiyor). Ve programın farklı yerlerinde yoğun kopyalama ile nesnenin gerekli olup olmadığını düşünmek zordur. Smartpointer'lar bu durumda çok kullanışlıdır.

Tabii ki, "çöp toplayıcı" gibi şeyler var - ama bu seçeneği daha az seviyorum, çünkü işaretçiler referansa ve kopya sayısına tam erişime sahipken çöp toplayıcı değil. İşaretçilerin artık ihtiyaç duyulmaz bir nesneyi yok ettiğinden ve çöp toplayıcının biraz gecikmeyle çalıştığından bahsetmiyorum bile.

 
George Merts :

Tabii ki, "çöp toplayıcı" gibi şeyler var - ama bu seçeneği daha az seviyorum, çünkü işaretçiler referansa ve kopya sayısına tam erişime sahipken çöp toplayıcı değil. İşaretçilerin artık ihtiyaç duyulmaz bir nesneyi yok ettiğinden ve çöp toplayıcının biraz gecikmeyle çalıştığından bahsetmiyorum bile.

Ah-huh, GC, zorla başlatılsa bile her zaman her şeyi silmez. Bazen bu bir sorun haline gelir.
 
Vasiliy Sokolov :

Nefret edenlerin, dahası okuma yazma bilmeyenlerin kışkırtmalarına boyun eğmeyeceğim, bunun yerine kendi bakış açımı açıklayacağım:

Normal programlama dillerinde ( C++ değil ) '=' operatörünün aşırı yüklenmesi yasaktır . Ve bazılarında , operatörün aşırı yüklenmesi neredeyse tamamen yasaktır, çünkü. oldukça haklı bir şekilde orada bir antipattern olarak kabul edilir. Böyle bir aşırı yüklenmeyi, özellikle atama operatörünü kullanmadan önce, bu aptal dillerin bu aptal mimarlarının bunu neden yaptığını düşünmenin iyi olduğunu öneriyorum.

Şahsen Andrei'ye karşı koyamadım: kahretsin, kendini böyle rezil etme. Sonuçta, açıkçası aptalca şeyleri donduruyorsunuz: önce FP hakkında, şimdi operatörler hakkında. Hile yapmak istiyorsanız - hoş geldiniz: yetkili kaynaklara bağlantılar sağlayın, iyi gerekçelendirin, vb. Ve şu anda yaptığınız şey, kuduz ve en önemlisi, kesinlikle okuma yazma bilmeyen bir nefret. Bir programcı gibisin, hatta gerçek bir programcı gibisin - şimdiden böyle şeyler yazmak çok yazık.


Vasily, dillerin adlarını belirtmek istenir. "Normal", "bazıları", "bunlar" sözleri söylenenlere inanılırlık katmaz.Biz programcıyız, kurgu yazarı değiliz, açıklamalarımızda net olalım.

 
Yuriy Asaulenko :
Ah-huh, GC, zorla başlatılsa bile her zaman her şeyi silmez. Bazen bu bir sorun haline gelir.

Nesnenin yüksek bir olasılıkla yeniden yaratılacağına inanıyorsa, onu silmez.