C++中派生類對(duì)基類成員的訪問形式主要有以下兩種:
1、內(nèi)部訪問:由派生類中新增成員對(duì)基類繼承來的成員的訪問。
2、對(duì)象訪問:在派生類外部,通過派生類的對(duì)象對(duì)從基類繼承來的成員的訪問。今天給大家介紹在3中繼承方式下,派生類對(duì)基類成員的訪問規(guī)則。
1、私有繼承的訪問規(guī)則
當(dāng)類的繼承方式為私有繼承時(shí),基類的public成員和protected成員被繼承后成為派生類的private成員,派生類的其它成員可以直接訪問它們,但是在類的外部通過派生類的對(duì)象無法訪問。基類的private成員在私有派生類中是不可直接訪問的,所以無論是派生類的成員還是通過派生類的對(duì)象,都無法直接訪問從基類繼承來的private成員,但是可以通過基類提供的public成員函數(shù)間接訪問。私有繼承的訪問規(guī)則總結(jié)如下:
| 基類成員 | private成員 | public成員 | protected成員 |
| 內(nèi)部訪問 | 不可訪問 | 可訪問 | 可訪問 |
| 對(duì)象訪問 | 不可訪問 | 不可訪問 | 不可訪問 |
2、公有繼承的訪問規(guī)則
當(dāng)類的繼承方式為公有繼承時(shí),基類的public成員和protected成員被繼承到派生類中仍作為派生類的public成員和protected成員,派生類的其它成員可以直接訪問它們。但是,類的外部使用者只能通過派生類的對(duì)象訪問繼承來的public成員。基類的private成員在私有派生類中是不可直接訪問的,所以無論是派生類成員還是派生類的對(duì)象,都無法直接訪問從基類繼承來的private成員,但是可以通過基類提供的public成員函數(shù)直接訪問它們。公有繼承的訪問規(guī)則總結(jié)如下:
| 基類成員 | private成員 | public成員 | protected成員 |
| 內(nèi)部訪問 | 不可訪問 | 可訪問 | 可訪問 |
| 對(duì)象訪問 | 不可訪問 | 可訪問 | 不可訪問 |
3、保護(hù)繼承的訪問規(guī)則
當(dāng)類的繼承方式為保護(hù)繼承時(shí),基類的public成員和protected成員被繼承到派生類中都作為派生類的protected成員,派生類的其它成員可以直接訪問它們,但是類的外部使用者不能通過派生類的對(duì)象訪問它們。基類的private成員在私有派生類中是不可直接訪問的,所以無論是派生類成員還是通過派生類的對(duì)象,都無法直接訪問基類中的private成員。保護(hù)繼承的訪問規(guī)則總結(jié)如下:
| 基類成員 | private成員 | public成員 | protected成員 |
| 內(nèi)部訪問 | 不可訪問 | 可訪問 | 可訪問 |
| 對(duì)象訪問 | 不可訪問 | 不可訪問 | 不可訪問 |