Hatalar, hatalar, sorular - sayfa 1056

 

Ben de mevcut durum için bir gerekçe bulabilirim: aynı sınıfın örnekleri arasında "mülkiyet haklarının" katı bir şekilde sınırlandırılması, her türlü ikili işlemi (hiyerarşinin aynı seviyesinde bile) tanımlarken sözdizimi karmaşasına yol açabilir. Ancak, miras alınırken "doğrudan erişim" kesinlikle kesilmelidir.

Çünkü nefig, kesinlikle..;)

 
MetaDriver :

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.

1. Cüzdanınızı gerçekten gizlemek istiyorsanız, neden bir gch() işlevi yapıyorsunuz?

2. Ve kopyalama kopyaları ne zaman kullanılabilir?

 
Zloy_Koldun :

1. Cüzdanınızı gerçekten gizlemek istiyorsanız, neden bir gch() işlevi yapıyorsunuz?

2. Ve kopyalama kopyaları ne zaman kullanılabilir?

Önceki yazımı okuyun. Tüm cevaplar orada.

Antik çağda bir zaman, kendi sınıfındaki diğer nesneleri (örnekleri) "varsayılan olarak" arkadaş olarak kabul etmek için - tamamen bukaf'ı kurtarmak için - bir "siyasi karar" verildi. Ve şimdi bu istisnayı hayatın normu olarak görüyorsun ve tüm uzak akrabaların özel ceplerine özgürce tırmanmak istiyorsun.

Tanrım...

 
MetaDriver :

1. Özel bölüme yerleştirme, bu durumda hiçbir şeyi değiştirmeyecektir.

 class Человек
{
private :
   int кошелёк; 
public :
   void Человек() {  кошелёк= 3 ; }
   void gч( Человек& ч )  
   { 
    ч.кошелёк--;   // сейчас работает.  а не должно ;)
   }
};

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.

Evet işe yarıyor ama çalışmamalı. Bu arada, ME'de otomatik tamamlama (saat yazarken) özelde olduğu için size "çanta" değişkeni verilmeyecektir, bu nedenle bu özellik çok uzun süredir fark edilmemiş olmalıdır.
 
class Человек
{
private:
   int кошелёк; 
public:
   void Человек() {  кошелёк=3; }
   void gч( Человек& ч )  
   { 
    ч.кошелёк--;   // Работает и должно работать!
   }
   void gcч( const Человек& ч )  
   { 
    ч.кошелёк--;   // Не работает, как и должно.
   }
};
 
Zloy_Koldun :

TAMAM. Ve söyle bana. Bir sınıfta böyle bir alan nasıl tanımlanır, böylece yalnızca ve münhasıran "sahip" örneğinin yöntemleriyle ve başka hiç kimse tarafından değiştirilemez.

Bu mümkün değilse, görünüşe göre dilde kapsülleme göğüsleri konusu açıklanmamıştır. Değil?

 
MetaDriver :

TAMAM. Ve söyle bana. Bir sınıfta böyle bir alan nasıl tanımlanır, böylece yalnızca ve münhasıran "sahip" örneğinin yöntemleriyle ve başka hiç kimse tarafından değiştirilemez.

Bu mümkün değilse, görünüşe göre dilde kapsülleme göğüsleri konusu açıklanmaz. Değil?

Bu imkansız. Ve buna gerek yok. Aynı fikirde değilseniz, iyi bir örnek verin.
 
Bu hata ne anlama geliyor, erteleme işe yaramadı: " HistoryBase: 'GBPUSD60'ta 114 hata
 
MetaDriver :
 class Человек
{
private :
   int кошелёк; 
public :
   void Человек() {  кошелёк= 3 ; }
   void gч( Человек& ч )  
   { 
    ч.кошелёк--;   // сейчас работает.  а не должно ;)
   }
};
Bu özellik şaşırtıcıydı. Kesinlikle, eğer derleyici başka birinin örneğinin özel alanını değiştirmenize izin veriyorsa, bu tam bir saçmalıktır. Servis masasına postalamak gerekli olacaktır.
 
C-4 :
Bu özellik şaşırtıcıydı. Kesinlikle, eğer derleyici başka birinin örneğinin özel alanını değiştirmenize izin veriyorsa, bu tam bir saçmalıktır. Servis masasına postalamak gerekli olacaktır.

Anlamıyorum: neden kendini bu kadar sınırlamak istiyorsun?

Bunun programınızı otomatik olarak daha güvenli hale getireceğini düşünüyor musunuz?

Olmayacak! Aksine, bunun tersi doğrudur.

Bir gün sizi şöyle yazacak olan ekstra kısıtlamalardır:

 static int Мой_Кошелёк; // Бери, все, кто хочет.