Hatalar, hatalar, sorular - sayfa 1055
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
Profilinizde Servis Masasını bulun.
Burada bir çelişki yoktur, aksi takdirde B aşağıda gösterildiği gibi C.t'ye erişebilir, B ise C'nin bir türevi değildir.
Örneğinizde B'nin Ct'ye erişimi olmalıdır ve bunu yasaklamak için hiçbir neden göremiyorum.
İkiniz de tuhafsınız. Sınıfları ve örnekleri karıştırıyorsunuz. Benim için, aynı B sınıfının başka bir örneğinin t'sine erişim olmamalıdır.
Korunan alanlar yalnızca kendilerine ait olmalıdır (aynı B örneğinin, yani bunun) ve başka bir örnek (aynı B sınıfından bile) kapatılmalıdır .. Açıklık için yeniden adlandıralım:
Onlar. benim için - her iki işlev de derlenmemeli, yalnızca birincisi değil. C++'da ikincisi derlenir ve çalışırsa, bu bir erdem değil, bir C++ hatasıdır.
Kısaca konuşmak gerekirse:
Bir cüzdan ile karşılaştırmanız yanlış.
Korumalı üyelere erişimin gerekli olduğu bir örnek verebilirim, ancak bu benim veya sizin tercihlerinizle ilgili değil.
Programcı bir şeyi yasaklamak isterse, bunu kendisi yapabilir ve derleyici yasaklamalıdır,
eğer programı bozabilirse.
Yukarıdaki örnekte, B sınıfı A sınıfını biliyor, bu yüzden orada hiçbir şeyi mahvetmeyecek.
Ve devre dışı bırakmak istiyorsanız, Private bölümüne koyun veya bir sınıftan miras almayın veya binlerce başka yol düşünün.
Onlar. benim için - her iki işlev de derlenmemeli, yalnızca birincisi değil. C++'da ikincisi derlenir ve çalışırsa, bu bir erdem değil, bir C++ hatasıdır.
O zaman cüzdanınıza erişim de reddedilir.
Bir kez daha: sınıflar (türler) ve örnekler (değişkenler) arasında dikkatli bir şekilde ayrım yapın. Kendi (bu) korumalı alanlar, miras alınırken (özel olanların aksine), yabancı (aynı sınıftaki diğer değişkenler) mevcut olmamalıdır dahil olmak üzere serbestçe kullanılabilir. (mevcut olmamalı)
.....
Yukarıdaki örnekte, B sınıfı A sınıfını biliyor, bu yüzden orada hiçbir şeyi mahvetmeyecek.
..................
Cüzdanınız olduğunu biliyor olmam ona erişmem için bir sebep değil. Seninkine lütfen. Sizinkine - yalnızca get() ve set() aracılığıyla - izin verirseniz (public: int get(); int set();).
Cüzdanınız olduğunu biliyor olmam ona erişmem için bir sebep değil. Seninkine lütfen. Sizinkine - yalnızca get() ve set() aracılığıyla - izin verirseniz (public: int get(); int set();).
Cüzdan sadece özel bir durum. Ve kimse onu özel bir yere koyma zahmetinde bulunmuyor.
Başka bir durumda, başka bir nesnenin üst sınıfının bir değişkenine erişmeniz gerekebilir.
Ve buna izin verip vermemeye karar vermek programcıya kalmış. Ve derleyici, programın doğru çalışmasını sağlamalıdır.
Çelişki örneği verdim..nesne aynı
Çelişki yok. Kendinize "dış arayüz" aracılığıyla atıfta bulunuyorsanız - kendinizle yüzleşmeye hazır olun. ;)
........... çünkü derleme zamanında .
1. Cüzdan sadece özel bir durumdur. Ve kimse onu özel bir yere koyma zahmetinde bulunmuyor.
2. Başka bir durumda, başka bir nesnenin üst sınıfının bir değişkenine erişmeniz gerekebilir.
3. Ve buna izin verip vermemeye karar vermek programcıya kalmıştır.
4. Derleyici de programın doğru çalışmasını sağlamalıdır.
1. Özel bölüme yerleştirme, bu durumda hiçbir şeyi değiştirmeyecektir.
Mirasta değişecek, açık.
2. Herkesin ihtiyaç duyacağı birkaç şey ... nedeni yalnızca kendi kopyalarına erişirken.
3. Bırak o karar versin. Doğru şekilde. ;)
4. Bütün soru şudur: Tam olarak neyin "doğru iş" olarak kabul edildiği.