繼承本質(zhì)是類層次的復(fù)用。
創(chuàng)新互聯(lián)服務(wù)項目包括留壩網(wǎng)站建設(shè)、留壩網(wǎng)站制作、留壩網(wǎng)頁制作以及留壩網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,留壩網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到留壩省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!學(xué)生和老師的類中包含Person類的內(nèi)容。?
Print函數(shù)也是繼承下來的。?
上述代碼中,Peraon叫父類,也叫基類,Student叫子類也叫派生類。
public叫繼承方式,繼承方式包括公有保護(hù)和繼承。
基類中的私有本質(zhì)是不想被繼承。
父類中的私有成員,子類中不能訪問。父類中的保護(hù)成員,子類可以訪問。
但是age在studen類中,就是不能被訪問。
基類的私有成員在子類都是不可見?;惖钠渌蓡T在子類的訪問方式 == Min(成員在基類的訪問限定符,繼承方式),public >protected >private。
去掉繼承方式,class默認(rèn)是私有繼承,子類外部不能訪問繼承成員,struct默認(rèn)是公有繼承,子類外部能訪問繼承成員。
子類會先構(gòu)造父類,然后構(gòu)造子類,析構(gòu)時先析構(gòu)子類,再析構(gòu)父類。
父類和子類賦值轉(zhuǎn)換。
子類對象 可以賦值給 父類的對象 / 父類的指針 / 父類的引用。?
int main()
{
Person p;
Student s;
p=s;
}
其中p=s中間不存在類型轉(zhuǎn)換,沒有產(chǎn)生臨時變量。
而底下這個i=d會產(chǎn)生臨時變量,臨時變量是int類型。
所以底下沒有const修飾的引用會報錯。在前面加上const就好了。
父類 ++后,子類也++
賦指針也行,指針指向子類中的父類部分。
下面這個_num訪問的是Student本身的_num
訪問父類的話可以指定作用域。
子類和父類有同名成員時,子類隱藏了父類成員。
子類和父類中有同名成員,子類成員將屏蔽父類對同名成員的直接訪問,這種情況叫隱藏,
也叫重定義。?
兩個fun構(gòu)成隱藏關(guān)系。?
構(gòu)成隱藏關(guān)系。
父類和子類函數(shù)名相同就構(gòu)成隱藏。
重載要求必須在同一個作用域。?兩個fun不構(gòu)成重載。
class A
{
public:
void fun()
{
cout<< "A::func()"<< endl;
}
};
class B : public A
{
public:
void fun(int i)
{
cout<< "B::func(int i)->"<< i<< endl;
}
};
void Test()
{
B b;
b.fun(10);
};
如果去掉fun調(diào)用時的參數(shù),就會編譯報錯。
因為兩個fun構(gòu)成隱藏關(guān)系,去掉fun的參數(shù),就要訪問A中的fun,但因為被隱藏,直接訪問不行。
class A
{
public:
void fun()
{
cout<< "A::func()"<< endl;
}
};
class B : public A
{
public:
void fun(int i)
{
cout<< "B::func(int i)->"<< i<< endl;
}
};
void Test()
{
B b;
b.fun();
};
這樣改就行了。?
建議繼承中不要定義同名成員。
為什么調(diào)用Student會調(diào)用Person中的函數(shù)并執(zhí)行?
子類中,父類成員調(diào)用父類構(gòu)造函數(shù)完成初始化。
父類沒有默認(rèn)構(gòu)造函數(shù)會報錯。
規(guī)定不能在子類初始化列表直接初始化父類成員變量。
必須要調(diào)用父類的成員函數(shù)。
下面看看拷貝構(gòu)造。
父類部分調(diào)用父類拷貝構(gòu)造。
而如果是自定義類型,需要我們寫個拷貝構(gòu)造。
我們看到父類中拷貝構(gòu)造函數(shù)參數(shù)是父類。
在這里如何找到要拷貝的Person對象?
我們直接傳s就可以,?
子類傳給父類發(fā)生了賦值轉(zhuǎn)換。s傳的就是Person中的內(nèi)容。?
我們來看看賦值。
我們不寫,也會默認(rèn)調(diào)用父類賦值。
顯示寫就這樣寫。?
但這樣運(yùn)行會報棧溢出錯誤。
因為這個賦值和父類賦值構(gòu)成隱藏關(guān)系,這里面的operator=(s)調(diào)用的是自己,所以會棧溢出。
這樣改就好了。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁題目:C++繼承-創(chuàng)新互聯(lián)
文章地址:http://jinyejixie.com/article14/cessge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、定制開發(fā)、搜索引擎優(yōu)化、自適應(yīng)網(wǎng)站、網(wǎng)站建設(shè)、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容