程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 第15章 面向對象編程(5)

第15章 面向對象編程(5)

編輯:C++入門知識

15.2.6 友元關系與繼承
像其他類一樣,基類或派生類可以使其他類或函數稱為友元。友元可以訪問類的private和protected數據。
友元關系不能繼承。基類的友元對派生類的成員沒有特殊訪問權限。如果基類被授予友元關系,則只有基類具有特殊訪問權限,該基類的派生類不能訪問授予友元關系的類。
每個類控制對自己的成員的友元關系。
如果派生類想要將自己成員的訪問授予其基類的友元,派生類必須顯式地這樣做:基類的友元對從該基類派生的類型沒有特殊訪問權限。同樣,如果基類和派生類都需要訪問另一個類,那個類必須特地將訪問權授予基類和每一個派生類。

class Base{ 
    friend class Friend; 
    friend class ChildFriend; 
private: 
    int i; 
}; 
 
class Child1:private Base{ 
    friend class Friend; 
    friend class ChildFriend; 
private: 
    int j; 
}; 
 
class Friend 

public: 
    int mem(Base b){return b.i;} 
    int mem(Child1 c){return c.i+c.j;} 
}; 
 
class ChildFriend:public Friend 

public: 
    int cmem(Base b){return b.i;} 
    int cmem(Child1 c){return c.i+c.j;} 
}; 
15.2.7 繼承與靜態成員
如果基類定義了static成員,則整個繼承層次中只有一個這樣的成員。無論從基類派生出多少個派生類,每個static成員只有一個實例。
static成員遵循常規訪問控制:如果成員在基類中為private,則派生類不能訪問它。假定可以訪問成員,則既可以通過基類訪問static成員,也可以通過派生類訪問static成員。一般而言,既可以使用作用域操作符也可以使用點或箭頭成員訪問操作符。

class Base{ 
protected: 
    static int i; 
}; 
 
class Child:public Base{ 
    void f(const Child &c) 
    { 
        c.i; 
        Base::i; 
        Child::i; 
        i; 
    } 
}; 

摘自 xufei96的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved