共用方式為


存取控制和靜態成員

當您指定基底類別,做為private,它會影響只有非靜態成員。 公用靜態成員是在衍生類別中,仍然可以存取。 不過,存取使用指標、 參考或物件的基底類別的成員可以要求的轉換,此時一次套用存取控制。 參考下列範例:

// access_control.cpp
class Base
{
public:
    int Print();             // Nonstatic member.
    static int CountOf();    // Static member.
};

// Derived1 declares Base as a private base class.
class Derived1 : private Base
{
};
// Derived2 declares Derived1 as a public base class.
class Derived2 : public Derived1
{
    int ShowCount();    // Nonstatic member.
};
// Define ShowCount function for Derived2.
int Derived2::ShowCount()
{
   // Call static member function CountOf explicitly.
    int cCount = Base::CountOf();     // OK.

   // Call static member function CountOf using pointer.
    cCount = this->CountOf();  // C2247. Conversion of
                               //  Derived2 * to Base * not
                               //  permitted.
    return cCount;
}

在上述的程式碼,存取控制會禁止轉換變數的指標, Derived2指標的Base。 這個指標都是隱含型別的Derived2 *。 若要選取CountOf函式, 這個必須轉換成型別Base *。 因此,不允許這類轉換Base為私用的間接基底類別Derived2。 私用基底類別型別轉換為只接受立即的衍生類別的指標。 因此,型別的指標Derived1 *可以轉換成型別Base *。

請注意該呼叫CountOf函式,而不使用指標、 參考或物件來選取它,表示沒有轉換。 因此,允許呼叫。

成員及朋友的衍生類別中, T,可將轉換為變數的指標, T的私用的直接基底類別指標的T。

請參閱

參考

基底類別的存取規範