共用方式為


類別的指標

有兩種情況中變數的指標,類別可以轉換成基底類別的指標。

備註

如為前者,指定的基底類別是可存取,並轉換模稜兩可。 (請參閱多個基底類別如需有關模稜兩可的基底類別參考。)

是否可存取基底類別,則用於衍生的繼承類型而定。 請考慮下圖所示的繼承。

基底類別的存取範圍的圖例的繼承圖形

繼承圖形基底類別存取範圍

下表顯示基底類別存取範圍,如圖所示的情況。

基底類別可及性

函式型別

衍生

從轉換

B *,A * 修正?

外部 (不類別範圍) 的函式

Private

 

Protected

 

Public

B ¦ B 的範圍) 的成員函式

Private

 

Protected

 

Public

(在 c 的範圍) 的 c 的成員函式

Private

 

Protected

 

Public

第二句中變數的指標,類別可以轉換成基底類別指標是當您使用明確型別轉換。 (請參閱有明確的型別轉換運算式如需有關明確的型別轉換。)

這類轉換的結果是物件的變數的指標,子 」 物件,"完全由基底類別所描述部分。

下列程式碼會定義兩個類別, A和B,其中B衍生自A。 (如需有關繼承的詳細資訊,請參閱衍生的類別。) 然後定義bObject,型別的物件B,以及兩個指標 (pA和pB) 所指向的物件。

// conve__pluslang_Pointers_to_Classes.cpp
// C2039 expected
class A
{
public:
    int AComponent;
    int AMemberFunc();
};

class B : public A
{
public:
    int BComponent;
    int BMemberFunc();
};
int main()
{
   B bObject;
   A *pA = &bObject;
   B *pB = &bObject;

   pA->AMemberFunc();   // OK in class A
   pB->AMemberFunc();   // OK: inherited from class A
   pA->BMemberFunc();   // Error: not in class A
}

指標pA屬於型別A *,這可視為意義 」 指標型別的物件, A。" 成員的bObject(如BComponent和BMemberFunc) 都是唯一可以在此輸入B ,因此無法存取,透過pA。  pA指標只允許存取這些特性 (成員函式和資料) 之物件的類別中定義的A。

請參閱

參考

指標轉換 (C++)