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

 
Vasiliy Sokolov :
Sabit yöntem , "en iyisini istedik, her zamanki gibi ortaya çıktı" atasözünün bir başka örneğidir. C++ için genel olarak sloganın bu olduğunu düşünüyorum. Pratik bir faydası yoktur, ancak OOP programlarının tasarımını önemli ölçüde karmaşıklaştırır, çünkü değiştirilen nesnenin türünü sürekli olarak kontrol etmek gerekir (aynı zamanda sabit olmalıdır).

Yazdıklarınıza bir örnek verebilir misiniz?

 
Vasiliy Sokolov :
Sabit yöntem , "en iyisini istedik, her zamanki gibi ortaya çıktı" atasözünün bir başka örneğidir. C++ için genel olarak sloganın bu olduğunu düşünüyorum. Pratik bir faydası yoktur, ancak OOP programlarının tasarımını önemli ölçüde karmaşıklaştırır, çünkü değiştirilen nesnenin türünü sürekli olarak kontrol etmek gerekir (aynı zamanda sabit olmalıdır).

))) Stroustrup'un eski kitabı bende var, hırsızlar eve girerse, onunla kolayca savaşabilirim, bir tuğla gibi ağırlığında)) Yaşlı adam dile bu tür zorlukları aşıladı ..

Artılarla ilgili bir röportajda uzun süre yönlendirildiğimi hatırlıyorum, bana bir soru sordular ve doğru cevaplayamadım. Benzer bir Talmud getirdiler, okuyun, soruyorum - kendiniz mi kullanıyorsunuz?

Adamlar böyle gülüyor, her şey yolunda, kimse kullanmadığı için bu soruyu henüz kimse doğru cevaplayamadı.

Bu arada, bir yerde, ilk standardın kabul edilmesinden önce bile, 90'ların başlarındaki artılar hakkında bir kitap var. Normal bir sindirilebilir ciltsiz kitap. Ve sonra Ostap acı çekti))

 
Alexey Kozitsyn :

Yazdıklarınıza bir örnek verebilir misiniz?

Alex bir örnek yazdı. Bir const yöntemi, sınıfının üyelerini değiştiremez. Sorun ne gibi görünüyor? Sadece const değiştiriciyi kullanmayın. Ama sonra kalıtımda zorluklar var (özellikle standart kitaplıktan ): tasarımcı sanal bir const yöntemi tanımladı ve türetilmiş sınıfta, yöntemin verilerindeki bir şeyi değiştirmesi gerekiyor - ve işte const nedeniyle bir tıkaç. Onsuz, yöntem geçersiz kılınmaz ve onunla türetilmiş yöntem kendi sınıfının verilerini değiştiremez.

Sınıf yöntemleri için böyle bir değiştirici tanıtmanın ana hatası nedir? Mirasın ana ilkesinin ihlal edilmesi gerçeğinde: uzmanlaşma ve iyileştirme. Temel sınıf, türetilmiş bir sınıf yönteminin dahili verileriyle çalışmasını engeller. Ve bu olmamalı.

 
Vasiliy Sokolov :

Keskin bir mil uzağa taşır))

Hiçbir şey bunu zorlaştırmaz, la-la'ya gerek yok

 
Комбинатор :

Keskin bir mil uzağa taşır))

inkar etmiyorum. Sharpe gerçekten de mükemmel, harika ve güzel bir dildir.

birleştirici :

Hiçbir şey bunu zorlaştırmaz, la-la'ya gerek yok

Diyelim ki const ile her zaman çıkabilirsiniz. Ancak const'ın ne verdiğini bir örnekle kısaca açıklamak daha iyidir? Gerçek faydası nedir? Bir örnekte ve tercihen emilen bir parmaktan değil.

 
Const, en parlak C++ metaforlarından biridir: önce kodunuz boyunca özenle karmaşık tuzaklar yerleştirirsiniz ve sonra kendi tuzaklarınızdan kurtulursunuz - bu, C++'daki tüm programlama sürecidir.
 
Vasiliy Sokolov :

...

Sınıf yöntemleri için böyle bir değiştirici tanıtmanın ana hatası nedir? Mirasın ana ilkesinin ihlal edilmesi gerçeğinde: uzmanlaşma ve iyileştirme. Temel sınıf, türetilmiş bir sınıf yönteminin dahili verileriyle çalışmasını engeller. Ve bu olmamalı.

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.

 
Vasiliy Sokolov :

inkar etmiyorum. Sharpe gerçekten de mükemmel, harika ve güzel bir dildir.

...

Harika. Ama o mükemmellikten uzaktır.
 
Dmitry Fedoseev :
Harika. Ama o mükemmellikten uzaktır.
Sharp, oradaki bazı dahiler tarafından yapıldığı için değil, sonuncusu olduğu için iyidir. Ondan önce, 30 yıl boyunca çeşitli boyutlarda ve tuhaf konfigürasyonlarda tırmıklarla kendilerini öldürmeye çalıştılar. C++ bunun için harika bir test alanıydı . Tüm cinayetlerden sonra, Microsoft'taki adamlar sinirlendiler ... denedikleri kavramları benimsediler ve sıfırdan sözdizimsel olarak temiz bir dil yarattılar.
 
Bu arada, MetaQuotes ayrıca MQL5'i kademeli olarak komisyon benzeri bir canavara la C++ "geliştirmek" için iyi bir şansa sahipti. Ancak (ter, gözyaşı ve nefretin olduğu yerde) derin C++ bilgisi, hiçbir durumda forum eski okul C++ programcılarının tavsiyelerine uymamanız gerektiğini anlamama yardımcı oldu. Bu nedenle, artık sözdizimsel olarak temiz ve az çok güçlü yazılmış bir programlama dilimine sahibiz. Tamamen canavar bir mirasa dayanarak böyle bir şeker yaratmayı başarmaları bile şaşırtıcı. Dedikleri gibi, beceri içemezsiniz.