繼承是面向?qū)ο蟪绦蛟O(shè)計使代碼可以復(fù)用的重要手段,當(dāng)創(chuàng)建一個類時,您不需要重新編寫新的數(shù)據(jù)成員和成員函數(shù),只需指定新建的類繼承了一個已有的類的成員即可。這個已有的類稱為基類,新建的類稱為派生類。
公司主營業(yè)務(wù):成都做網(wǎng)站、成都網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出中站免費做網(wǎng)站回饋大家。繼承的定義 定義格式繼承父類成員訪問關(guān)系的變化類成員/繼承方式 | public繼承 | protected繼承 | private繼承 |
---|---|---|---|
基類的public成員 | 派生類的public成員 | 派生類的private成員 | 派生類的private成員 |
基類的protect成員 | 派生類的protected成員 | 派生類的protected成員 | 派生類的private成員 |
基類的private成員 | 派生類中不可見 | 派生類中不可見 | 派生類中不可見 |
子類對象可以賦值給父類的對象/父類的指針/父類的引用。一般情況下子類對象都比父類對象大,這里賦值的時候會產(chǎn)生切片或者叫切割。
切片/切割
父類對象不能賦值給子類對象。但是指針和引用可以,但是必須進行強制類型轉(zhuǎn)換,并且這個行為十分危險,可能存在越界訪問。
class Person
{public:
string _name;
};
class Student:public Person
{public:
int _age;
int _major;
};
int main()
{//子類可以賦值給父類
Student a;
Person b = a;
Person* c = &a;
Person& b = a;
//父類不能賦值給子類
a = b;
//父類不能賦值給子類,但是可以進行強制轉(zhuǎn)換
Person* b1 = &b;
Student* a1 = (Student*)b1;
return 0;
}
繼承中的作用域繼承下來的調(diào)用父類處理,子類的按照普通類的基本規(guī)則。
那么什么情況下需要我們自己寫?
友元關(guān)系不能繼承,就比如父親的朋友不一定是你的朋友。
繼承與靜態(tài)成員父類定義了static成員,則整個繼承體系中只有一個這樣的靜態(tài)成員,無論派生出多少個子類,都只有一個static成員,因此靜態(tài)成員可以繼承下來,但是只有一份。
菱形繼承以及菱形虛擬繼承 單繼承一個子類只有一個直接父類時稱這個繼承關(guān)系為單繼承。
多繼承一個子類有兩個或者兩個以上的直接父類時稱這個繼承關(guān)系為多繼承。
菱形繼承菱形繼承是多繼承的一種特殊情況
當(dāng)這樣的繼承關(guān)系出現(xiàn)的時候,對于Assistant會形成數(shù)據(jù)的冗余以及二義性,因為在其中出現(xiàn)了兩份Person。
我們看下面一串代碼,
#includeusing namespace std;
class A
{public:
int _a;
};
class B : public A
//class B : virtual public A
{public:
int _b;
};
class C : public A
//class C : virtual public A
{public:
int _c;
};
class D : public B, public C
{public:
int _d;
};
int main()
{D d;
d.B::_a = 1;
d.C::_a = 2;
d._b = 3;
d._c = 4;
d._d = 5;
return 0;
}
當(dāng)我們查看d對象的地址,我們看到里面的存儲是這樣子存儲的。并且是先繼承誰先存儲誰,倘若我們將代碼中的D類換為
class D : public C, public B
{public:
int _d;
};
我們要是將繼承的順序進行調(diào)換,那么我們將看到在d對象中就先存誰的順序就會變換,先繼承的先進行存儲。
當(dāng)我們進行調(diào)試
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧