Temel sınıflar için erişim belirticileri
Türetilmiş bir sınıf içinde bir temel sınıf üyeleri erişilebilir iki etken Denetim; aynı faktörlerin türetilmiş sınıf devralınan üyeleri için erişim denetimi:
Temel sınıfını kullanarak türetilmiş bir sınıf olup olmadığını bildirir ortak belirleyici olarak erişim sınıf kafa (sınıf kafası dilbilgisi bölümünde açıklanan Tanımlayan sınıf türleri).
Temel sınıf üyesine erişim nedir.
Aşağıdaki tabloda, bu faktörlerin ve temel sınıf üyesi access belirleme arasındaki etkileşimi gösterir.
Temel sınıf üyesi Access
private |
korumalı |
Public |
---|---|---|
Türetme erişim ne olursa olsun her zaman erişilemez |
Özel türetme kullanırsanız, türetilmiş sınıf içinde özel |
Özel türetme kullanırsanız, türetilmiş sınıf içinde özel |
|
Korumalı türetme kullanırsanız, türetilmiş sınıf içinde korumalı |
Korumalı türetme kullanırsanız, türetilmiş sınıf içinde korumalı |
|
Ortak türetme kullanırsanız, türetilmiş sınıf içinde korumalı |
Ortak türetme kullanırsanız, türetilmiş sınıf içinde ortak |
Aşağıdaki örnekte bu gösterilmektedir:
// access_specifiers_for_base_classes.cpp
class BaseClass
{
public:
int PublicFunc(); // Declare a public member.
protected:
int ProtectedFunc(); // Declare a protected member.
private:
int PrivateFunc(); // Declare a private member.
};
// Declare two classes derived from BaseClass.
class DerivedClass1 : public BaseClass
{
};
class DerivedClass2 : private BaseClass
{
};
int main()
{
}
De DerivedClass1, üye işlev PublicFunc ortak üyesi olduğu ve ProtectedFunc çünkü korumalı üyesi olduğu BaseClass ortak bir taban sınıftır.PrivateFuncözel olduğu BaseClass, ve türetilmiş tüm sınıflar için erişilemez.
De DerivedClass2, işlevler PublicFunc ve ProtectedFunc özel üye olarak kabul edilir çünkü BaseClass özel bir taban sınıftır.Yine, PrivateFunc için özel BaseClass, ve türetilmiş tüm sınıflar için erişilemez.
Bir temel sınıf erişim belirticisi içermeyen türetilmiþ bir sýnýf bildirebilirsiniz.Böyle bir durumda, türetme türetilmiş sınıf bildirimi kullanıyorsa, özel kabul sınıfı anahtar sözcüğü.Türetme türetilmiş sınıf bildirimi kullanıyorsa, ortak olarak kabul struct anahtar sözcüğü.Örneğin, aşağıdaki kod:
class Derived : Base
...
eşdeğerdir:
class Derived : private Base
...
Benzer şekilde, aşağıdaki kodu:
struct Derived : Base
...
eşdeğerdir:
struct Derived : public Base
...
Bu işlevler veya sınıfları kullanılarak bildirilen sürece türetilmiş sınıfları veya özel erişim sahip olarak bildirilen üyeler işlevleri için erişilebilir değildir unutmayın friend temel sınıf bildiriminde.
A Birliği türü, bir temel sınıf olamaz.
[!NOT]
Özel bir temel sınıf belirtirken, açıkça kullanmasını tavsiye edilir private anahtar sözcüğünü türetilmiþ sýnýf kullanıcıları üye erişim anlamak için.