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
Mdyaya ... const'ta olduğu gibi, insanlar her şeyi çalıştırıyor (((
const belirteci ile yöntemleri anlamak için
Şimdi yap
//int Get() const {return i;}
ve ardından tam tersi:
// int Get() {return 2*i;}
)))
Aynı varyant, aynı kod
O consts ile birlikte
giriş olduğundan emin misin
her zaman ver
kontrol etmeden yazmak
?
const olmadan değişken çünkü temel sınıfın giriş parametrelerine bir referansı yoktur, bu stil çok yetkin olmasa da doğru şekilde çalışacaktır.
O yüzden uymuyor. Karşılaştır'da imza değiştirilemez. QuickSort yöntemiyle SB'ye dahil edilen normal sıralamanın çalışması esas olarak bu amaç içindir.
İmzayı değiştirin, Wirth'in yeniden tanımlanması olmayacak. işlevler, ancak bir aşırı yük ve temel sınıf CObject yöntemi çağrılır, burada return 0;
Eh, tabi ki kaplara sararak (dekorasyon yaparak) çözülüyor ama neden bu ekstra hareketler ya da daha sonra SB kullanmıyor, her şeyi sıfırdan yazıyorsunuz.
Sizinkiyle bire bir gibi görünüyor, sadece daha küçük harfler. Bu yüzden kimin daha çok sevdiği bir zevk meselesi, ancak fazladan değişkeni kaldırdım (büyük olasılıkla, derleyici onu optimizasyonun bir parçası olarak kaldıracaktı).
Benim !düğümle ilgili. Kesin olarak, CheckPointer(node)==POINTER_INVALID ile değiştirilmelidir, ancak bu bir ek yük, bir işlev çağrısıdır. Satır içi olsa bile, en azından durum bayrağını referans alıyor ve kontrol ediyor. Karşılaştırma yöntemleri yalnızca sizin tarafınızdan yazılmış bir kitaplık veya belirli bir program ise, geçersiz bir işaretçi göndermemek için !node kullanmak ve kodu takip etmek daha iyidir. İşaretçileri takip edemeyecek kadar tembelseniz veya bu küçük olmayanlar için bir kitaplıksa, yalnızca CheckPointer(node)==POINTER_INVALID.
Vurguladığınız const belirtecini kaldırırsanız, bu yöntemleri bir const nesnesinden çağıramazsınız.
UPD: vurgulanan kontrol, çağrılan yöntemlerde olduğu için kaldırılabilir.
Vladimir, bu durumda CheckPointer gereksiz. dynamic_cast, dahil olmak üzere herhangi bir başarısız yayın için NULL döndürür. işaretçi bozuksa. Yanlışsa düzeltin. Uzun süre test edildi, 5 saniye test edildi)
CheckPointer çalışma mekanizması nedir (basit bir deyişle, düşük seviyeli terimlerle güçlü değildir) - bilgi almak mümkün değilse, ne tür bir nesne, dinamik veya statik, işaretçiye bakar, ardından POINTER_INVALID. Bu durumda, dinamik nesne silinirse, diğer durumları bilmiyorum ya da işaretçiye çöp atıyorlar, ancak bulunacak boşluklar yoksa derleyici bunu kontrol etmelidir.
ve dynamic_cast aynı şeyi yapar, ayrıca bu işaretçinin gerekli türe, yani. bu türden bir işaretçi mi yoksa bir alt sınıf mı?
İşaretçi bozulursa, dynamic_cast hiçbir şeyi belirleyemez ve NULL döndürür.
Bu yüzden CheckPointer kullanmadım. Her ne kadar genellikle her yerde bu kontrolü günahtan uygulasam da. Yine de düşmeyen bir yazılımda hata bulmak biraz daha kolay gibi görünüyor)
const olmayan - teorik olarak GetRatingByAnyFormula() { m_rating01=Formula01(); gibi bir yönteminiz olabilir. dönüş m_rating01;}
sıralamada hemen kullanılmazsa sakıncalıdır, yani. her durumda, önce derecelendirmeyi düşünün ve ardından buna göre sıralamayı arayın. Ya da daha önce de belirtildiği gibi, SB'nizi sıfırdan yazın)
O yüzden uymuyor. Karşılaştır'da imza değiştirilemez. QuickSort yöntemiyle SB'ye dahil edilen normal sıralamanın çalışması esas olarak bu amaç içindir.
İmzayı değiştirin, Wirth'in yeniden tanımlanması olmayacak. işlevler, ancak bir aşırı yük ve temel sınıf CObject yöntemi çağrılır, burada return 0;
Eh, tabi ki kaplara sararak (dekorasyon yaparak) çözülüyor ama neden bu ekstra hareketler ya da daha sonra SB kullanmıyor, her şeyi sıfırdan yazıyorsunuz.
En doğru yol µl üzerine yazmamaktır.
Vladimir, bu durumda CheckPointer gereksiz. dynamic_cast, dahil olmak üzere herhangi bir başarısız yayın için NULL döndürür. işaretçi bozuksa. Yanlışsa düzeltin. Uzun süre test edildi, 5 saniye test edildi)
CheckPointer çalışma mekanizması nedir (basit bir deyişle, düşük seviyeli terimlerle güçlü değildir) - bilgi almak mümkün değilse, ne tür bir nesne, dinamik veya statik, işaretçiye bakar, ardından POINTER_INVALID. Bu durumda, dinamik nesne silinirse, diğer durumları bilmiyorum ya da işaretçiye çöp atıyorlar, ancak bulunacak boşluklar yoksa derleyici bunu kontrol etmelidir.
ve dynamic_cast aynı şeyi yapar, ayrıca bu işaretçinin gerekli türe, yani. bu türden bir işaretçi mi yoksa bir alt sınıf mı?
İşaretçi bozulursa, dynamic_cast hiçbir şeyi belirleyemez ve NULL döndürür.
Bu yüzden CheckPointer kullanmadım. Her ne kadar genellikle her yerde bu kontrolü günahtan uygulasam da. Yine de düşmeyen bir yazılımda hata bulmak biraz daha kolay gibi görünüyor)
const olmayan - teorik olarak GetRatingByAnyFormula() { m_rating01=Formula01(); gibi bir yönteminiz olabilir. dönüş m_rating01;}
sıralamada hemen kullanılmazsa sakıncalıdır, yani. her durumda, önce derecelendirmeyi düşünün ve ardından buna göre sıralamayı arayın. Ya da daha önce de belirtildiği gibi, SB'nizi sıfırdan yazın)
!düğüm hakkında. Kesin olarak, CheckPointer(node)==POINTER_INVALID ile değiştirilmelidir, ancak bu bir ek yük, bir işlev çağrısıdır.
Sorun tepede olmayacak, çünkü bozuk işaretçi programın mantığını değiştirecektir. Onlar. sorunu ortaya çıkarmak yerine daha da derine ineceksiniz.
CheckPointer yalnızca hata ayıklama amacıyla veya zayıf bir işaretçi uygulaması olarak kullanılmalıdır.
1. Tartışmıyorum ama CheckPointer GEREKLİ DEĞİLDİR (genç olmayanlar için bile), tk. dynamic_cast , herhangi bir NULL işaretçisi döndüremez, yalnızca NULL.
2. Hatta ilginç, ancak dinamik bir nesneyi öldürmenin yanı sıra geçersiz bir işaretçiyi nasıl alabileceğinize veya çalışma sürecinde doğrudan hafızayı “kirletebileceğinize” dair bir örnek hemen düşünemiyorum.
Sanırım hala bu tür yöntemler var, ancak hepsi büyük olasılıkla derleyici denetimlerini atlama düzleminde yatıyor.
3.4 Katılıyorum
not
Görünüşe göre 1. hakkında yanılmışım. Test aksini söylüyor. Yani görünüyordu)
sınıfın genel bölümünde statik bir dizi bildirmek ve onu yapıcıda başlatmak mümkün müdür? (aşağıdaki gibi) (veya sadece eleman eleman mı?)
Yerel bir diziyi başlatabilir ve ilgili alan dizisine bir ArrayCopy gerçekleştirebilirsiniz: