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