這部分內容比較繁瑣,但很簡單,在此條理地介紹一下。
1.首先,介紹:對類中成員的訪問方式
先舉一個例子,了解水平訪問和垂直訪問
#include B: bobj.bfun(); }
訪問包括兩種方式:水平訪問和垂直訪問
(1)水平訪問,是指對類中成員的實例化使用;
(2)垂直訪問,指在使用繼承時,派生類中成員函數對基類成員的訪問。
2.訪問控制和繼承方式
訪問控制被用於數據的封裝和保護。可以從兩個角度實現對類中數據的訪問控制:設置類成員的訪問屬性和設置繼承方式。
類成員的訪問屬性有三種,即public、private和protected。
公有成員允許外部函數訪問;私有成員不允許外部函數訪問,只允許本類的成員函數訪問;保護成員不允許外部函數訪問,但允許本類和其子類的成員函數訪問。
(1)繼承方式對水平訪問的影響(這是我們最常用見的)
如下表:
說明:若piblic>protected>private;那麼派生類的訪問權限=min(基類訪問權限,繼承方式),然後根據派生類中成員的訪問屬性確定水平訪問權限。
(2)繼承方式對垂直訪問的影響(垂直方向上如A派生B,B派生C)
如下表:
說明:1、繼承方式只是改變了繼承成員的訪問權限,對父子類的垂直訪問沒有影響;
2、只要父類中元素是public或protected,子類均可垂直訪問。
總結:上表中第4列和第2列有關;第5列和第3列有關。如前所述,第3列是由1、2列得到的。