C++基類(lèi)說(shuō)明解析
C++通過(guò)繼承機(jī)制,可以利用已有的數(shù)據(jù)類(lèi)型來(lái)定義新的數(shù)據(jù)類(lèi)型,下面文章給出了C++基類(lèi)來(lái)管理內(nèi)存的完整內(nèi)存池管理程序和測(cè)試程序的源代碼,供大家學(xué)習(xí)切磋。
作為繼承,主要有三種:公有繼承,私有繼承(默認(rèn)繼承方式),保護(hù)繼承。公有繼承:基類(lèi)中的公有成員在派生類(lèi)中仍公有;基類(lèi)中的保護(hù)成員在派生類(lèi)中仍保護(hù);基類(lèi)中的私有成員在派生類(lèi)中不可見(jiàn),僅基類(lèi)可見(jiàn)。#t#
私有繼承:基類(lèi)中的公有成員在派生類(lèi)中為私有;C++基類(lèi)中的保護(hù)成員在派生類(lèi)中為私有;基類(lèi)中的私有成員在派生類(lèi)中不可見(jiàn),僅基類(lèi)可見(jiàn)。保護(hù)繼承:基類(lèi)中的公有成員在派生類(lèi)中為保護(hù);
C++基類(lèi)中的保護(hù)成員在派生類(lèi)中為保護(hù);基類(lèi)中的私有成員在派生類(lèi)中不可見(jiàn),僅C++基類(lèi)可見(jiàn)。通過(guò)繼承機(jī)制,派生類(lèi)繼承了基類(lèi)的成員,所繼承的成員只屬于派生類(lèi)。即基類(lèi)和派生類(lèi)各有一份這樣的成員,這點(diǎn)很重要。接下來(lái),我們不慌看繼承,回到類(lèi)來(lái)看:(個(gè)人理解所謂可見(jiàn)性即是調(diào)用權(quán)限!)
接下來(lái),我們不慌看繼承,回到類(lèi)來(lái)看:
- #include《iostream》
- using namespace std;
- class A{
- public:
- void dump()const{....}
- protected:
- void get_x(){x++;}
- private:
- int x;
- };
- class B:public A
- {
- public:
- void get(){ get_x();}
- /* void get_y(){ y=x;} */
- void compare(A &a){ a.get_x();}
- protected:
- void set(){...}
- private:
- int y;
- };
- int main()
- {
于是我們知道,在派生類(lèi)不可見(jiàn)的成員并不是不可訪(fǎng)問(wèn)的,可以通過(guò)間接的方式訪(fǎng)問(wèn)!總結(jié)上面的,做了一張表:(注:派生類(lèi)中成員的可見(jiàn)性是指繼承來(lái)的和自身添加的成員。
成員 |
C++基類(lèi)(類(lèi)) |
派生類(lèi) |
main |
私有數(shù)據(jù) |
可見(jiàn) |
不可見(jiàn) |
不可見(jiàn) |
私有函數(shù) |
可見(jiàn) |
不可見(jiàn) |
不可見(jiàn) |
保護(hù)數(shù)據(jù) |
可見(jiàn) |
可見(jiàn) |
不可見(jiàn) |
保護(hù)函數(shù) |
可見(jiàn) |
可見(jiàn) |
不可見(jiàn) |
公有數(shù)據(jù) |
可見(jiàn) |
可見(jiàn) |
可見(jiàn) |
公有函數(shù) |
可見(jiàn) |
可見(jiàn) |
可見(jiàn) |