Yöntem bildiriminden sonra const değiştirici ne anlama geliyor? - sayfa 3

 
Nadiren değil, kasıtlı olarak aşağıdaki yapıları kullanıyorum:
 const TYPE1 Method( const TYPE2 Input ) const ;
Ve eğer sadece nesnenin dahili verilerini değiştirmezsem, aynı zamanda onlara erişmezsem, o zaman yöntemi hemen statik olarak yazarım. Benim için const ve static kullanmak, kendi kodumun okunabilirliğini/anlamasını büyük ölçüde artırır. Ayrıca, 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.
 
Dmitry Fedoseev :

Belki de bu, yaratıcılardan sıradan kullanıcılara verilen bir kısımdır. EA ve Bid, Ask değişkenlerindeki başlatma işlevi gibi. Her şeyi kendiniz yaptığınızda, her türlü const ile uğraşmanın bir anlamı yoktur.

Ne yazık ki, uyumluluk adına tüm bu balastları sürüklemeniz gerekiyor. Öte yandan, C ve C++'dan gelen küçük kodlar çok hızlı bir şekilde MQL'ye taşınır (birçok kez test edilmiştir).
 

İlginç bir eğilim fark ettim - vakaların ezici çoğunluğunda, onu hiç anlamayanlar artıların büyüklüğünden bahsediyor. Temelde tipik olan keskinleştiriciler.

Evet, elbette, bir çubuk gibi düz bir şey yapmanız gerektiğinde keskin daha iyi ve daha kullanışlıdır)

 
zaskok3 :
Nadiren değil, kasıtlı olarak aşağıdaki yapıları kullanıyorum:
Ve eğer sadece nesnenin dahili verilerini değiştirmezsem, aynı zamanda onlara erişmezsem, o zaman yöntemi hemen statik olarak yazarım. Benim için const ve static kullanmak, kendi kodumun okunabilirliğini/anlamasını büyük ölçüde artırır. Ayrıca, uygulamanın ilk aşamalarında kendi mimarinizdeki bir hatayı veya kusurları sık sık yakalamanıza olanak tanır.
...

Ah çocuklar. Sana merhamet et MetaQuotes. Bir programcının ilk emirlerinden biri: asla statik kullanmayın. İkinci emir: statik kullanmak istiyorsanız, birinci noktaya bakın :)

Eğer bir iş parçacığı tarafından okunan statik veriler bir iş parçacığı tarafından değiştirilirse, çok iş parçacıklı programlamanın öyle mucizeleri ortaya çıkmaya başlar ki, o zaman bu statik bilgiyi kötü bir rüya gibi hatırlarsınız.

Ancak bu, MQL'deki kullanıcılar için iyidir: çoklu iş parçacığı yoktur, bu, kullanıcı iş parçacığı okumayı bitirmeden önce hiçbir yöntemin statik değeri değiştirmeyeceği anlamına gelir.

 
Vasiliy Sokolov :

Bir programcının ilk emirlerinden biri: asla statik kullanmayın. İkinci emir: statik kullanmak istiyorsanız, birinci noktaya bakın :)

Eğer bir iş parçacığı tarafından okunan statik veriler bir iş parçacığı tarafından değiştirilirse, çok iş parçacıklı programlamanın öyle mucizeleri ortaya çıkmaya başlar ki, o zaman bu statik bilgiyi kötü bir rüya gibi hatırlarsınız.

Bir kez daha tartışma olmayacağına ikna oldum)
 
Комбинатор :

İlginç bir eğilim fark ettim - vakaların ezici çoğunluğunda, onu hiç anlamayanlar artıların büyüklüğünden bahsediyor. Temelde tipik olan keskinleştiriciler.

Evet, elbette, bir çubuk gibi düz bir şey yapmanız gerektiğinde keskin daha iyi ve daha kullanışlıdır)

Klasik si plushnik maza: "Kedileri sevmiyor musun? Sadece onları nasıl pişireceğini bilmiyorsun."

Hayır, C++'ın başka hiçbir dil gibi geliştirme standartlarına ayarlanamayacağını inkar etmiyorum. Doğru, bu standartlara gelene kadar, bir tırmık hakkında o kadar çok öldürüleceksiniz ki, ya C ++'da gerçekten harika bir programcı olacaksınız ya da tükürüp arp için 1C ERP-shki'ye gideceksiniz.

 
Vasiliy Sokolov :

Klasik si plushnik maza: "Kedileri sevmiyor musun? Sadece onları nasıl pişireceğini bilmiyorsun."

Eh, durum bundan ibaret.)

Sharpe'a karşı hiçbir şeyim yok, hemen şimdi, uygun, hızlı bir şekilde botlar yazıyorum.

Hak etmeyen bir şeye çamur atmalarından ve dahası, hiç kimsenin onu mutlaka kullanmaya zorlamamasından hoşlanmıyorum.

Bu, genel olarak hem eksiler hem de artılar için geçerlidir.

 
Комбинатор :

Eh, durum bundan ibaret.)

Sharpe'a karşı hiçbir şeyim yok, hemen şimdi, uygun, hızlı bir şekilde botlar yazıyorum.

Hak etmeyen bir şeye çamur atmalarından ve dahası, hiç kimsenin onu mutlaka kullanmaya zorlamamasından hoşlanmıyorum.

Bu, genel olarak hem eksiler hem de artılar için geçerlidir.

Tamam dünya. Basitçe tartışma ++ ile her zaman holivarda aşağı yuvarlanır.

ZY Birisi bana const kullanarak konunun ne olduğunu açıklarsa, minnettar olacağım. gerçekten anlamıyorum.

 
Vasiliy Sokolov :

Alex bir örnek yazdı. Bir const yöntemi, sınıfının üyelerini değiştiremez.

 void bar(X& obj) const 
    {
         obj._x = 42 ; // OK! obj передается по ссылке и не имеет модификатора const
        _x = 42 ; // ERROR!
    }

Belki bir şey anlamadım, ama ... burada. Aleksey , sabit yöntem çubuğunun nesne sınıfının nesnesini değiştirdiğini yazdı. Sorun nedir?

Evet, obj referansla iletilir, ancak bu nedenle yöntem sabit olmayı bırakmadı ...

 
Alexey Kozitsyn :

Belki bir şey anlamadım, ama ... burada. Aleksey , sabit yöntem çubuğunun nesne sınıfının nesnesini değiştirdiğini yazdı. Sorun nedir?

Evet, obj referansla iletilir, ancak bu nedenle yöntem sabit olmayı bırakmadı ...

Kendi değil, tamamen yabancı, sadece tip aynı.