C++繼承的相關(guān)訪問歸納-創(chuàng)新互聯(lián)

舉例三個(gè)類:公共(public)繼承

class A? ? ? ? ? ? ? ? ? ? ? ????????? class B :public A? ? ? ? ? ? ? ? ? ? ? ? ? ? calss C:public B

創(chuàng)新互聯(lián)公司長(zhǎng)期為上1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為和政企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作,和政網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

{? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????? {? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

public:? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????? ? public:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?public:? ? ? ?

? void fa1();? ? ? ? ? ? ? ? ? ? ????????? ? void fb1();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?void fc1();

? int a1;? ? ? ? ? ? ? ? ? ? ? ? ????????? ? ? int b1;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?int c1;

protected:? ? ? ? ? ? ? ? ? ? ? ???????? ??protected:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? protected:

? void fa2;? ? ? ? ? ? ? ? ? ? ? ? ? ?????????void fb2();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? void fc2();

? int a2;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????int b2;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int c2;

private:? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????? ?private:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?private:

? void fa3();? ? ? ? ? ? ? ? ? ? ? ? ????????? void fb3();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? void fc3();

? int a3;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????int b3;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int c3;

};? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????};? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? };

分別創(chuàng)建各自對(duì)象A a,B b,C c;

1、問:A類中的成員能訪問到A中的那些成員?

理解題意:A類所以問的是類內(nèi)訪問

類內(nèi)訪問的權(quán)限public,protected、private。

2、問:A類的對(duì)象a可以訪問到A的那些成員?

理解題意:A類的對(duì)象a訪問屬于是類外訪問

處于保護(hù)protected和private成員對(duì)于類外是不可見的,所以只能訪問到public成員。

3、問:B類的成員可以訪問到B和A中的那些成員?

B類以public的繼承方式繼承了A,搞清楚public的繼承方式規(guī)則:除了私有private不可繼承外其余public、protected均可繼承。

對(duì)于類內(nèi)訪問,凡是可繼承就可以訪問,所以B類內(nèi)可以訪問自己B中的public、protected、private成員和A中的public、protected成員。

4、問:B的對(duì)象b可以訪問A、B的那些成員?

對(duì)于類外訪問protected和private是不可見的,所以b只能訪問到A的public和B的public。

以此類推C類內(nèi)訪問可以訪問到A的public、protected和B中的public、protected以及自己C的public、protected和private;而對(duì)于類外對(duì)象c來說則只能訪問到A的public、B的public、C的public。

總結(jié):(1)對(duì)于類內(nèi)訪問,public、protected、private均可訪問,而對(duì)于繼承凡是可繼承則在類內(nèi)均可見;對(duì)于類外訪問,則只能看到public部分。(2)public的繼承規(guī)則,除私有成員private不可繼承外,其余均可繼承。

舉例三個(gè)類:保護(hù)(protected)繼承

class A? ? ? ? ? ? ? ? ? ? ? ????????? class B :protected?A? ? ? ? ? ? ? ? ? ? ? ?calss C:protected B

{? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????? {? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

public:? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????? ? public:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?public:? ? ? ?

? void fa1();? ? ? ? ? ? ? ? ? ? ????????? ? void fb1();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?void fc1();

? int a1;? ? ? ? ? ? ? ? ? ? ? ? ????????? ? ? int b1;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?int c1;

protected:? ? ? ? ? ? ? ? ? ? ? ???????? ??protected:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? protected:

? void fa2;? ? ? ? ? ? ? ? ? ? ? ? ? ?????????void fb2();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? void fc2();

? int a2;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????int b2;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int c2;

private:? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????? ?private:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?private:

? void fa3();? ? ? ? ? ? ? ? ? ? ? ? ????????? void fb3();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? void fc3();

? int a3;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????int b3;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int c3;

};? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????};? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? };

首先了解保護(hù)繼承的規(guī)則:

對(duì)于保護(hù)繼承可以繼承和自己權(quán)限相等和高于自己的,換句話說就是可繼承public和protected,但高于自己的權(quán)限在派生類中要降級(jí)成和自己同等權(quán)限,而和自己同等級(jí)的不變;protected繼承后從基類繼承來的public再派生類中屬于protected。(可能沒看懂,沒關(guān)系下面舉例)

1、問:對(duì)于B類內(nèi)訪問可以訪問到A和B的那些成員?

B從A中繼承到了public和protected部分,但按照保護(hù)繼承的規(guī)則從A繼承來的public要降級(jí)成為protected權(quán)限,但類內(nèi)訪問均可看見,所以B類內(nèi)訪問可以訪問A的public(在B中是protected)成員和A的protected成員,B類內(nèi)可以訪問自己類中的所有成員。

3、問:B的對(duì)象b可以訪問到AB的那些成員?

b作為B的對(duì)象,屬于類外訪問,所以可以訪問到B的public成員,而A以保護(hù)繼承的方式繼承到B其public成員到了派生類B中變成了protected成員所以對(duì)外不可見,自然b也就訪問不到了。

2、對(duì)于C類,從B中繼承到了A的public和protracted(在C中都是protected)繼承了B的public和protected(在C中也都是protected)所以對(duì)于C的類內(nèi)訪問可以訪問到A的public、protected和B的public、protected以及自己的所有成員。

根據(jù)上述類外訪問以此類推出C的對(duì)象c只能訪問到C的public部分。

舉例三個(gè)類:私有(private)繼承

class A? ? ? ? ? ? ? ? ? ? ? ????????? class B :private A? ? ? ? ? ? ? ? ? ? ? ?calss C:private?B

{? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????? {? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {

public:? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????? ? public:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?public:? ? ? ?

? void fa1();? ? ? ? ? ? ? ? ? ? ????????? ? void fb1();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?void fc1();

? int a1;? ? ? ? ? ? ? ? ? ? ? ? ????????? ? ? int b1;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?int c1;

protected:? ? ? ? ? ? ? ? ? ? ? ???????? ??protected:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? protected:

? void fa2;? ? ? ? ? ? ? ? ? ? ? ? ? ?????????void fb2();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? void fc2();

? int a2;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????int b2;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int c2;

private:? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????? ?private:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?private:

? void fa3();? ? ? ? ? ? ? ? ? ? ? ? ????????? void fb3();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? void fc3();

? int a3;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????int b3;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int c3;

};? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????};? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? };

對(duì)于私有繼承的規(guī)則:

對(duì)于private成員是不可以繼承的,其余public和proteced均可繼承但是繼承到派生類中時(shí)都會(huì)降級(jí)成private權(quán)限!

可以根據(jù)以上知識(shí)點(diǎn)繼續(xù)研究C的類內(nèi)訪問可以訪問到那些C的類外訪問可以訪問到那些?

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

當(dāng)前文章:C++繼承的相關(guān)訪問歸納-創(chuàng)新互聯(lián)
文章源于:http://bm7419.com/article14/dcodge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、品牌網(wǎng)站制作網(wǎng)站制作、用戶體驗(yàn)、域名注冊(cè)網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司