Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Ve birisi bu alan başlatmanın ne olduğunu açıklıyor:
bundan daha iyi:
Ve neyse, amaç ne?
const alanları başlatılabilir.
Ve birisi bu alan başlatmanın ne olduğunu açıklıyor:
bundan daha iyi:
Ve neyse, amaç ne?
tamamen teorik bir soru.
Belki de SB'de böyle bir kurucu çağrısı gördüm:
bu kod arasındaki fark ne olurdu:
Çıktısını aldım, farkı görmedim, o zaman biraz daha spesifik olarak - a1 ve a2 nesnelerinin yapıcılarına zorunlu bir çağrıyı ne verir veya neden kullanabilirim?
ilk seçeneğin "kolaylığı" nedir?
İlk seçenek - Değer başlatma, ikincisi - Varsayılan başlatma olarak adlandırılır. Nesnenin türüne bağlı olarak incelikler ve farklılıklar vardır (varsayılan bir kurucu ile bir toplam olup olmadığı, ...). Örneğin, burada parantezler kullanıldığında ve kullanılmadığında tamamen farklı bir sonuç olacaktır:
Teorinin derinliklerine inmek istiyorsanız, burada https://en.cppreference.com/w/cpp/language/initialization
Not: µl için, bunların hepsi alakalı değildir, ancak referans modelin anlaşılması içindir.
Teorinin derinliklerine inmek istiyorsanız, burada https://en.cppreference.com/w/cpp/language/initialization
Henüz gerekli değil, ama kaydedeceğim, kaynağı nerede okuyacağımı bileceğim
Herkese teşekkürler!
Artılarda, ikinci seçenek kötü form olarak kabul edilir.
karşılaştığım problemin aynısı olacak - sınıfta birden fazla kurucu yazmak gerektiğinde alan başlatma kodunun çoğaltılması
2. seçeneği kullanırsanız, o zaman yinelenen kod ayrı bir yönteme konulabilir ve her kurucuda gerekli eylemler gerçekleştirildikten sonra bu yöntem çağrılabilir (bir yapıya sahip bir sınıf başlatmam var ve 2. seçenek adıdır. bu yapının verilerinin yazıldığı dosya (yedek depolama))
ilginç değil, ama sorun şu ki, sınıfa yeni bir alan eklersem, o zaman bu alanı kurucular olduğu kadar çok kez başlatmayı hatırlamam gerekecek - gerçek şu ki uygun değil mesele değil, ama bunu N kez yapmayı unutabilmen bir problem, IMHO
Henüz gerekli değil, ama kaydedeceğim, kaynağı nerede okuyacağımı bileceğim
Herkese teşekkürler!
karşılaştığım problemin aynısı olacak - sınıfta birden fazla kurucu yazmak gerektiğinde alan başlatma kodunun çoğaltılması
2. seçeneği kullanırsanız, o zaman yinelenen kod ayrı bir yönteme konulabilir ve her kurucuda gerekli eylemler gerçekleştirildikten sonra bu yöntem çağrılabilir (bir yapıya sahip bir sınıf başlatmam var ve 2. seçenek adıdır. bu yapının verilerinin yazıldığı dosya (yedek depolama))
ilginç değil, ama sorun şu ki, sınıfa yeni bir alan eklersem , o zaman bu alanı kurucular olduğu kadar çok kez başlatmayı hatırlamam gerekecek - gerçek şu ki uygun değil mesele değil, ama bunu N-kez yapmayı unutabileceğiniz gerçeği, bu bir problem, IMHO
Parametrik olabilen bir makro. Unutmak için (kendim acı çekiyorum), bu da tedavi edilir))))).
karşılaştığım problemin aynısı olacak - sınıfta birden fazla kurucu yazmak gerektiğinde alan başlatma kodunun çoğaltılması
2. seçeneği kullanırsanız, o zaman yinelenen kod ayrı bir yönteme konulabilir ve her kurucuda gerekli eylemler gerçekleştirildikten sonra bu yöntem çağrılabilir (bir yapıya sahip bir sınıf başlatmam var ve 2. seçenek adıdır. bu yapının verilerinin yazıldığı dosya (yedek depolama))
ilginç değil, ama sorun şu ki, sınıfa yeni bir alan eklersem, o zaman bu alanı kurucular olduğu kadar çok kez başlatmayı hatırlamam gerekecek - gerçek şu ki uygun değil mesele değil, ama bunu N-kez yapmayı unutabileceğiniz gerçeği, bu bir problem, IMHO
Hadi, her şey çözüldü:
Varsayılan yapıcılara (veya varsayılan başlatmaya) karşı değilim, ancak yapıcınız bir nesneyi (aptal bir toplam değilse) belirsiz bir durumda bırakırsa ve sonra bazı koltuk değnekleriyle önceden başlatırsanız, o zaman her şey yanlış.
Not: Bu arada, profesyonellerde temsilci bir kurucuya sahip olabilirsiniz, elbette bu yeterli değil
Hadi, her şey çözüldü:
biraz önümde, sadece bilgisayarın başına oturdu
@Vladimir Simakov'un doğru başlatmayı unutmamak için sınıf alanlarını bir makro kullanarak başlatma tavsiyesi, evet, bu iyi bir numara, ancak kod alanları başlatan bir yöntemi çağırmaya benzer şekilde okunacak olsa da, ne kadar iyi olduğunu hayal etmek zor ...
Örneğiniz de en rafine değil, ancak sorunu tam olarak kendim için yaptığım gibi çözüyor - ayrı bir başlatma yöntemi \
IMHO, burada soru şu amaçlara yöneliktir - gerekli tüm alanların olacağı temel sınıfı doğru bir şekilde yazmak, ondan miras almak, yapıcıyı korumak ve temel sınıfı mirasçılardan başlatmak, böylece "unutmaya" karşı korumak - orada varsayılan kurucu değil mi? ve bir üçüncü taraf çağrısı tarafından başlatılmaya karşı koruma olacak - yapıcı korunuyor mu? - en azından Microsoft, "korumalı kurucu" google'da arama yapıp yapmadığınızı görebilir - bir makale olacak
ve benim görevim biraz farklı, özellikle sınıf alanlarının durumunu bir dosyaya kaydetmek için kalıtımdan ayrıldım, 2 sınıftan 2 alanım var ve ayrıca uygun yöntemleri çağırarak durumlarını aynı dosyaya kaydediyorum. Temel sınıftan miras alındığında tüm bunları kaydetmeye çalıştım, çok kafa karıştırıcı bir şema olduğu ortaya çıktı, miras olmadan yeniden yazdım, şimdi her şey "şeffaf" oldu
biraz önümde, sadece bilgisayarın başına oturdu
@Vladimir Simakov'un doğru başlatmayı unutmamak için sınıf alanlarını bir makro kullanarak başlatma tavsiyesi, evet, bu iyi bir numara, ancak kod alanları başlatan bir yöntemi çağırmaya benzer şekilde okunacak olsa da, ne kadar iyi olduğunu hayal etmek zor...
Örneğiniz de en rafine değil, ancak sorunu tam olarak kendim için yaptığım gibi çözüyor - ayrı bir başlatma yöntemi \
IMHO, burada soru şu amaçlara yöneliktir - gerekli tüm alanların olacağı temel sınıfı doğru bir şekilde yazmak, ondan miras almak, yapıcıyı korumak ve temel sınıfı mirasçılardan başlatmak, böylece "unutmaya" karşı korumak - orada varsayılan kurucu değil mi? ve bir üçüncü taraf çağrısı tarafından başlatılmaya karşı koruma olacak - yapıcı korunuyor mu? - en azından Microsoft, "korumalı kurucu" google'da arama yapıp yapmadığınızı görebilir - bir makale olacak
ve benim görevim biraz farklı, özellikle sınıf alanlarının durumunu bir dosyaya kaydetmek için kalıtımdan ayrıldım, 2 sınıftan 2 alanım var ve ayrıca uygun yöntemleri çağırarak durumlarını aynı dosyaya kaydediyorum. Temel sınıftan miras alındığında tüm bunları kaydetmeye çalıştım, çok kafa karıştırıcı bir şema olduğu ortaya çıktı, miras olmadan yeniden yazdım , şimdi her şey "şeffaf" oldu
Burada bu kadar kafa karıştırıcı olan ne?
Burada kafa karıştıran ne?
bu tam olarak bıraktığım şey, ama ilk başta yaptım
bu yaklaşımla - "her şeyin olduğu yerde" temel sınıftan miras alın - her şey çalışır, ancak birkaç sınıf alanı oluşturmaya çalışmak ve sonra her sınıf alanına birkaç alan eklemek istediğimize kadar, hadi hepsini yenelim dinamik bir sınıf dizisi
ve Save (int hndl) yönteminin kendisini anlıyoruz - bunu temel sınıfta uygulayamıyoruz, bu yöntem esasen tartışıldığı gibi hiç gerekli olmayan bir arayüz olacak - arayüzler olmadan da yazabilirsiniz
bununla, sorun değil, hepsi bir zevk ve görev meselesi, genellikle kod esnekliği konusundaki çabalarımı en üst düzeye çıkarırım - minimum hareket - sonuç çözülmüş yeni bir problemdir, terminolojiyi affet)))
ve sorun şu ki, bir dosyaya kaydetmeyi uygularken, farklı türlerdeki toplam kayıt sayısını tanımlamanın gerekli olacağı bir dosya başlığı geliştirmek gerekecek, o zaman mantığı kaybetmemek gerekecek / her şeyi doğru okumak için veri kaydetme sırası .... ve bir sınıfta en az bir alan değiştirilirse final olacaktır
IMHO, temel sınıftan bu tür "hafif" mirasın karmaşıklığı - küçük bir veritabanının geliştirilmesi ve bakımına, herhangi bir sınıftaki değişikliklerin sürekli izlenmesine bağlıdır.