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
const işlevlerinin kullanılması, derleyicinin hataları algılamasına yardımcı olur ve ayrıca listenin okuyucusuna işlevin nesne alanlarının değerlerini değiştirmediğini gösterir. const işlevleriyle, daha sonra göreceğimiz gibi, const nesneleri oluşturabilir ve kullanabilirsiniz.
Mesafe sınıfı örneği
Pek çok yeniliği bir programa dahil etmemek için örneklerimizde henüz sabit yöntemler kullanmadık. Ancak, sabit yöntemlerin kullanılmasının çok faydalı olacağı birçok durum vardır. Örneğin, örneklerimizde defalarca karşımıza çıkan Distance sınıfının showdist() yöntemi, çağrıldığı nesnenin alanları değişmediği (ve değişmemesi gerekir!) için sabit hale getirilmiş olmalıdır. Sadece mevcut alan değerlerinin ekranda görüntülenmesi amaçlıdır .
...
250, Laforet R. - C++'da Nesne Yönelimli Programlama (4. baskı) 2004'ten alınmıştır.
Anlatılmak istenen budur çünkü bu bağlamda tip tartışılmaz. "Kendi sınıfı" - örneğinin (yani nesne) olduğu açıktır.
_x üyesi, bar yöntemiyle aynı sınıfa aittir.
C obj._x - burada _x üyesi yabancı nesne sınıfındadır.
Bir örnekten değil de bir sınıftan bahsetmek bana mantıklı geliyor, çünkü _x'in yazdığımız sınıfımıza ve obj.x'in işlediğimiz bir yabancıya atıfta bulunduğu açık.
OOP terminolojisi hakkında konuşursak, tüm terminoloji bundan biraz (hatta çok fazla) oluşur.
Dmitry, bunu söylersen, OOP ile ilk tanışmaya başlayanların böyle bir terminolojiyle çıldıracağını anlıyor musun!?
Anlatılmak istenen budur çünkü bu bağlamda tip tartışılmaz. "Kendi sınıfı" - örneğinin (yani nesne) olduğu açıktır.
Bu muhtemelen sizin için açıktır. Sınıf bir talimat, bir soyutlama ise, sizin de söylediğiniz gibi, _x üyesinin nasıl bir sınıfa ait olabileceğini okuyorum ve düşünüyorum:
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Yöntem bildiriminden sonra const değiştirici ne anlama geliyor?
Dmitry Fedoseev , 2016.02.01 19:06
Bir nesne bir yöntemi nasıl çağırabilir? Yöntem, bir işlevden veya başka bir yöntemden çağrılabilir.
Yalnızca bir sınıf yöntemi değil, belirli bir nesnenin yöntemi de çağrılır. Sınıfın kendisi bir soyutlamadır.
C obj._x - burada _x üyesi yabancı nesne sınıfındadır.
Bir sınıf ile bir sınıf örneği arasındaki farkı cidden anlamıyorsunuz!? Her halükarda bunu söyleyemezsiniz, çünkü okuyucuda bir beyin patlamasına neden olacak ve o, metot olarak adlandırılan nesne ile nesne nesnesini aynı sınıfın örnekleri olmalarına rağmen farklı sınıfların örnekleri olduğunu düşünecektir. sınıf (verdiğiniz örnekte).
OOP terminolojisi hakkında konuşursak, tüm terminoloji bundan biraz (hatta çok fazla) oluşur.
const işlevlerinin kullanılması, derleyicinin hataları algılamasına yardımcı olur ve ayrıca listenin okuyucusuna işlevin nesne alanlarının değerlerini değiştirmediğini gösterir. const işlevleriyle, daha sonra göreceğimiz gibi, const nesneleri oluşturabilir ve kullanabilirsiniz.
Mesafe sınıfı örneği
Pek çok yeniliği bir programa dahil etmemek için örneklerimizde henüz sabit yöntemler kullanmadık. Ancak, sabit yöntemlerin kullanılmasının çok faydalı olacağı birçok durum vardır. Örneğin, örneklerimizde defalarca karşımıza çıkan Distance sınıfının showdist() yöntemi, çağrıldığı nesnenin alanları değişmediği (ve değişmemesi gerekir!) için sabit hale getirilmiş olmalıdır. Sadece mevcut alan değerlerinin ekranda görüntülenmesi amaçlıdır .
...
250, Laforet R. - C++'da Nesne Yönelimli Programlama (4. baskı) 2004'ten alınmıştır.
Dmitry, bunu söylersen, OOP ile ilk tanışmaya başlayanların böyle bir terminolojiyle çıldıracağını anlıyor musun!?
Bu muhtemelen sizin için açıktır. Sınıf bir talimat, bir soyutlama ise, sizin de söylediğiniz gibi, _x üyesinin nasıl bir sınıfa ait olabileceğini okuyorum ve düşünüyorum:
Cidden bir sınıf ile bir sınıf örneği arasındaki farkı anlamıyorsunuz!? Her halükarda bunu söyleyemezsiniz, çünkü okuyucuda bir beyin patlamasına neden olur ve o, metot olarak adlandırılan nesne ile nesne nesnesinin aynı sınıfların örnekleri olmasına rağmen farklı sınıfların örnekleri olduğunu düşünecektir. sınıf (verdiğiniz örnekte).
Neyle uğraştığınızı anlamadığınızda terminoloji "biraz" olur. Bir sınıfın (talimat) ne olduğunu ve bir sınıfın nesnesinin (örneğinin) ne olduğunu açıkça anlamanız yeterlidir. Ve sonra birçok sorun kendiliğinden ortadan kalkacak. Görünüşe göre seni ikna edemeyeceğim, bu yüzden bu konuyu daha fazla tartışmanın bir anlamı yok. Çok üzgünüm.Neden beni ikna etmeye çalışıyorsun? Tam olarak ikna etmek için ne var? İyiyim. Benim için tam bir çatışmasız anlayış için bu konunun ilk yazısı yeterliydi.
Ayrıca referansın anlamak için yeterli olacağını yazdığınızı da unutmayın. Bu nedenle, genellikle ne hakkında tartıştığınız açık değil mi?
not. Bana kendi kuruntularını mal etme.
Şahsen, const yöntemlerini her zaman sınıf değişkenlerini değiştiremeyen yöntemler olarak anladım.
Bunu çok nadiren kullandım - çünkü bir yöntemi geçersiz kılarken bir şeyin değiştirilmesi gerektiği ve temel yöntemin sabit olduğu bir durumla birden fazla kez karşılaştım (burada daha önce bahsedilmişti).
Statik yöntemleri yaygın ve yoğun bir şekilde kullanırım. Pratik olarak herhangi bir zor sınıfta. Genellikle bunlar, sınıf değişkenlerine erişim gerektirmeyen "hizmet" ek yöntemleridir.
Ayrıca, "bir günde saniye" gibi sabitler için #define değil statik const yapısını kullanmaya çalışıyorum. Aynı zamanda, böyle bir sabitin bildirimi ve başlatılması farklı yerlerdedir, ancak diğer yandan, bir kereden fazla bana yardımcı olan tip kontrolü gerçekleşir.
Şahsen, const yöntemlerini her zaman sınıf değişkenlerini değiştiremeyen yöntemler olarak anladım.
Çok nadiren kullandım - çünkü bir yöntemi geçersiz kılarken bir şeyin değiştirilmesi gerektiği ve temel yöntemin sabit olduğu bir durumla birden fazla kez karşılaştım (burada daha önce bahsedilmişti).
Bu nedenle, onları KULLANMAYIN ve bu nedenle onları KULLANIYORUM:
zaskok3 :
Benim için const ve static kullanmak, kendi kodumun okunabilirliğini/anlamasını büyük ölçüde artırır. Ve uygulamanın ilk aşamalarında kendi mimarinizdeki bir hatayı veya kusurları sık sık yakalamanıza olanak tanır .
Her şeyi kendim için yazıyorum. Ve öyle görünüyor ki, yapmamam gereken hiçbir veriyi değiştirmeyeceğim. Ancak kişinin kendi aptallığından korunma arzusu, kişiyi OOP mimarisini yalnızca değişim için uygun olması gerekenin mevcut olacağı şekilde perçinlemeye zorlar. Gerisi - hayır. Ve burada const + kalıtım türleri çok yardımcı oluyor. Tavsiye etmek.
Nazik insanlar danışmanın derlenmesine yardımcı olur, size yalvarırım, programlamada güçlü değilim.
Bunlar 'silen' hatalardır - derleme sırasında beklenen ad verir
geçersiz silme(int türü){
if(Sipariş Toplamı()>0){
for(i=OrdersTotal()-1;i>=0;i--){
OrderSelect (i,SELECT_BY_POS,MODE_TRADES);
if(type!=6 && type!=7 && type!=8)if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==type)OrderDelete(OrderTicket());
if(type==6)if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP || OrderType()==OP_BUYLIMIT || OrderType ()==OP_SELLLIMIT)OrderDelete(OrderTicket());
if(type==7)if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT)OrderDelete(OrderTicket());
if(type==8)if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT)OrderDelete(OrderTicket());
}
}
}
İşte başka bir hata '(' - nesne işaretçisi bekleniyor
if(karşıtdelete){delete(OP_SELLSTOP);delete(OP_SELLLIMIT);}
Ve burada '}' - tüm kontrol yolları bir değer döndürmez
int sayı küresel(){
int cnt=0;
if(Sipariş Toplamı()>0){
for(i=OrdersTotal()-1;i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
cnt++;
}
dönüş(cnt);
}
}
Bu nedenle, onları KULLANMAYIN ve bu nedenle onları KULLANIYORUM:
Uzun zaman önce yazılmış işlevleri okurken ve anlarken const belirtecinin yararlı olduğuna katılıyorum. Ama bana göre değişkenlere erişimi farklı özel-korumalı-genel bölümlerde bildirerek kısıtlamak daha mantıklı geliyor (şahsen ben değişkenleri asla public olarak ilan etmiyorum, sadece yöntemler).
Bir iç sınıf değişkeninin soyundan gelenlerde değiştirilmesi gerekmediği bir durumu düşünmek benim için zor.
Nazik insanlar danışmanın derlenmesine yardımcı olur, size yalvarırım, programlamada güçlü değilim.
Bu arada, kimse Const değiştiricisinin yalnızca kendi sınıfınız içindeki verileri değiştirmenize izin vermediğini, hatta const olmayan yöntemlere bile erişmenize izin vermediğini yazmadı. Basit bir örnek: bir pozisyon sınıfı var, pozisyon listesini kâra göre sıralamanız gerekiyor. Kar talep üzerine hesaplanır:
Bu kod bir hata ortaya çıkaracaktır, çünkü Kar yöntemi sabit olmasına rağmen, henüz kar hesaplanmamışsa, sabit olmayan CalcultaeProfit yöntemine atıfta bulunur.
Kâr yönteminin kendisinin kesinlikle güvenli olduğunu not ediyorum: Döndürdüğü değerin boş olmayacağını garanti eder. Bununla birlikte, sabit yöntem , perde arkasındaki hesaplamaları ve kodun yüksek güvenliğini, neyi ve neden kısıtladığını anlamayan bir tür emilmiş yapı lehine terk etmeyi gerektirir.