2013-01-17 37 views
9

Başlangıç ​​seviyesinde nesne yönelimli bir programlama tutkunuyum. Sınıf arkadaşlığı - bulmaca

class A { 
}; 

class B { 
protected: 
    friend class A; 
}; 

class C { 
public: 
    friend class B; 
}; 

yukarıdaki sınıflar veri üyeleri ne C'nin üyelerinin isimleri A üyelerinin beyanlarında kullanılabilecek varsayıldığında, yukarıda örnek kod değinen: Ben şu bulmaca karşılaştım?

  1. Sadece özel üyeler

  2. Sadece korumalı üyeler

  3. C'nin veri üyelerinin tamamı

  4. Sadece kamu üyeler

    C'nin veri üyelerinin
  5. Yok *

Arkadaşlık geçişli olmadığından seçimim 4'dür. Bu nedenle A, B'nin bir arkadaşıdır, fakat A, C'nin bir arkadaşı değildir (B, C'nin bir arkadaşı olsa bile). Bu doğru düşünce mi? Ayrıca

, benim sorunu olduğunu bugüne kadar (öğretici) Ben dostluğu böyle ilan edildiği exmaples tanıştım:

class X { 
public: 
    friend class Y; 
}; 

Kullandığımız fark varsa yerine kamu belirteci nedir bir tane mi korunuyor? Bunun gibi:

class X { 
protected: 
    friend class Y; 
}; 
+0

+1. – jrok

cevap

7
  1. Haklısın. Arkadaşlık geçişli değil, Devralındı.
  2. friend bildirimini hangi erişim belirtecinin altına koymanız fark etmez.

Sınıf sınıfının kendisi de C sınıfının arkadaşı olarak bildirilmez. C'un korumalı veya özel üyelerine A numaralı telefondan erişemezsiniz. İyi formüle edilmiş bir soru için

+0

Netleştirdiğiniz için teşekkür ederiz – Prz3m3k