亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++中的繼承

2019-11-06 07:20:52
字體:
來源:轉載
供稿:網友

繼承

1.繼承的概念

              在C++中,所謂“繼承”就是在一個已存在的類的基礎上建立一個新的類。已存在的類稱為“基類”或“父類”,新建立的類稱為“派生類”或“子類”。          單繼承:一個子類只有一個直接父類時稱這個繼承關系為單繼承;          多繼承:一個子類有兩個或多個以上的父類時稱這個繼承關系為多繼承          菱形繼承(鉆石繼承):
class Person{PRivate:	int _p;};class Student:public Person{private:	int _s;};class Teacher:public Person{private:	int _t;};class Assistant:public Student,public Teacher{private:	int _a;};int main(){	printf("%d/n",sizeof(Assistant));	system("pause");	return 0;}輸出的結果為20(后面詳述菱形繼承)2.派生類的聲明方式        class 派生類名 : [繼承方式]  基類名       {             派生類新增加的成員;       };       繼承方式:public(公有繼承)   protected(保護繼承)  private(私有繼承)       當沒有給出繼承方式時,使用關鍵字class聲明派生類默認繼承方式是private,使用關鍵字struct時默認繼承方式是public.  

3.派生類的構成

     構造一個派生類包含三部分工作:從基類接受成員;調整從基類接受的成員;(調整:指定繼承方式;聲明與基類相同名字的成員或函數,函數參數列表也要相同,構成隱藏,若參數列表不同,并不能認為它構成了重載,因為兩個函數并不在同一作用域中,不滿足重載的條件,具體是什么還不太了解,但類外不能調用該基類中的函數;)在聲明派生類是增加成員;

4.派生類的成員訪問屬性

不同的繼承方式決定了基類成員在派生類中的訪問屬性公用繼承           基類的公有成員和保護成員在派生類中保持原有的訪問屬性,其私有成員被繼承,但任為基類私有(不可見)           公有成員:在基類、派生類和類外均可訪問私有繼承           基類的公有成員和保護成員在派生類變為私有成員,其私有成員被繼承,但任為基類私有(都不可見)           私有成員:基類的私有成員只能在基類內部訪問,派生類和類外均不可訪問保護繼承           基類的共有成員和保護成員在派生類中變成了保護成員,其私有成員被繼承,但任為基類私有(不可見)           保護成員:基類的私有成員可以在基類內部和派生類中訪問,類外不允許訪問公用繼承中,派生類直接訪問基類的私有成員是不允許的,只有通過基類的公有成員函數來引用基類的私有成員;私有繼承中,不能通過派生類的對象來訪問從私有基類繼承過來的任何成員或函數,但可以通過派生類的成員函數調用私有基類的公用成員函數來實現對基類私有成員的訪問。

5.派生類的構造函數和析構函數

       基類的構造函數和析構函數時不能被繼承的       構造函數一般形式:           派生類的構造函數名(總參數列表)                             :基類的構造函數名(參數列表)                             [,子類對象(參數列表)]           {                        派生類新增數據成員初始化語句           } 繼承關系中構造函數的調用順序          派生類的構造函數(按照繼承列表的順序)------>初始化列表中調用基類構造函數----->基類構造函數體---->            派生類的構造函數體繼承關系中析構函數的調用順序           派生類的構造函數---->派生類的構造函數體---->基類的析構函數--->基類的析構函數體(與構造函數相反)說明:基類沒有缺省的構造函數即沒有缺省值和半缺省),派生類必須要在初始化列表中顯示的給出基類名和參數列表。(必須顯示的定義構造函數情景二)       必須顯示的定義構造函數情景一:存在兩個類,A和B,B類中定義了A類的對象,A類中定義了沒有缺省的構造          函數,則B類一定要顯示給出構造函數 基類沒有定義構造函數,則派生類也可以不用定義,全部使用缺省的構造函數(全缺省和系統默認合成的構造函數)     事例: 
class Test1{public:	Test1(int data)	{		cout<<"Test1()"<<endl;	}	~Test1()	{		cout<<"~Test1()"<<endl;	}};class Test2{public:	Test2(int data)	{		cout<<"Test2()"<<endl;	}	~Test2()	{		cout<<"~Test2()"<<endl;	}};class Base1{public:	Base1(int data)		:_data1(data)	{		cout<<"Base1()"<<endl;	}	~Base1()	{		cout<<"~Base1()"<<endl;	}protected:	int _data1;};class Base2{public:	Base2(int data)		:_data2(data)	{		cout<<"Base2()"<<endl;	}	~Base2()	{		cout<<"~Base2()"<<endl;	}protected:	int _data2;};class Derive:public Base1,public Base2{public:	/*Derive()		:Base1(0)		,Base2(1)		,t1(3)		,t2 		(4)*/      //兩種情況結果相同	Derive()		:t2(3)		,t1(4)       //與對象的定義順序有關		,Base1(0)		,Base2(1)   //與繼承時的聲明順序有關			{		cout<<"Deriver()"<<endl;	}	~Derive()	{		cout<<"~Deriver()"<<endl;	}protected:	Test1 t1;	Test2 t2;};void funtest(){	Derive d1;}int main(){	funtest();	system("pause");	return 0;}結果圖: 靜態成員可以繼承

6.繼承與轉換-----賦值兼容規則----public規則

子類對象可以賦值給父類對象-----賦值的那部分是子類繼承父類的部分父類的對象不能賦值給子類的對象---->程序會崩潰(因為賦值給派生類對象的區域為未知區域,系統不允許)父類的指針、引用可以指向子類對象,(但不能訪問派生類新增加的部分,因為父類不能強制轉化為子類)子類的指針、引用不能指向父類的對象(可以通過強制類型轉換完成)是不是不太明白,我們可以用程序示例和畫圖來解釋
class A{public:	A(int data = 1)		:_a(data)	{}private:	int _a;};class B:public A{public:	B(int data1)		:_b(data1)	{}private:	int _b;};int main(){	A a(1);  //父類對象	B b(2);  //子類對象	A* _a;   //父類指針	B* _b;   //子類指針	/*b = a; */    //父類給子類賦值,運行出錯	a = b;         //子類給父類賦值,運行成功	_a = &b;       //父類對象指向子類指針,運行成功	//_a->_b = 1;    //訪問派生類對象出錯	//_b = &a;       //子類指針指向父類對象,運行出錯,原因是無法將A*轉化為B*	_b = (B*)&a;     //將地址強制類型轉化為B類的地址,運行成功	return 0;} 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产视频999| 亚洲无限乱码一二三四麻| 精品国产老师黑色丝袜高跟鞋| 亚洲精品网站在线播放gif| 久久噜噜噜精品国产亚洲综合| 久久精品久久精品亚洲人| 久久亚洲影音av资源网| 免费不卡欧美自拍视频| 欧美精品激情视频| 日韩av综合网站| 亚洲精品国产美女| 欧美人交a欧美精品| 国产精品亚洲自拍| 国产精品看片资源| 在线视频日本亚洲性| 国产精品美女呻吟| 欧美人交a欧美精品| 久久久免费高清电视剧观看| 国产精品久久久久久久久久东京| 久久久91精品| 亚洲天堂成人在线视频| 欧美激情喷水视频| 欧美日韩在线视频一区| 国内精品视频在线| 日本成熟性欧美| 91成人免费观看网站| 一区二区三欧美| 日韩av一区二区在线观看| 亚洲国产97在线精品一区| 亚洲激情久久久| 精品亚洲va在线va天堂资源站| 一区二区亚洲欧洲国产日韩| 欧美激情啊啊啊| 欧美黄色性视频| 久久99久久99精品免观看粉嫩| 亚洲视频网站在线观看| 国产suv精品一区二区三区88区| 91日本在线视频| 成人亚洲欧美一区二区三区| 欧美色图在线视频| 欧亚精品中文字幕| 亚洲a中文字幕| 91色p视频在线| 成人精品久久av网站| 日韩一区二区在线视频| 色综合久久精品亚洲国产| 97久久久免费福利网址| 中文字幕精品视频| 国产精品入口免费视| 1769国内精品视频在线播放| 日韩免费中文字幕| 亚洲日本欧美日韩高观看| 97视频免费在线观看| 国产精品精品视频一区二区三区| 性欧美视频videos6一9| 国产午夜精品免费一区二区三区| 成人写真视频福利网| 国产亚洲一区二区在线| 97香蕉超级碰碰久久免费软件| 国产成人精品综合| 欧美一级黑人aaaaaaa做受| 亚洲天堂一区二区三区| 国产精品久久久久999| 日韩av中文字幕在线免费观看| 中文字幕日韩av综合精品| 日韩av片永久免费网站| 欧美日韩高清在线观看| 色综合亚洲精品激情狠狠| 日日狠狠久久偷偷四色综合免费| 高潮白浆女日韩av免费看| 国产中文欧美精品| 国产精品一区二区久久国产| 91精品国产91久久久久久久久| 欧美日韩中文在线观看| 欧美日韩免费一区| 国产成人精品一区| 国产精品久久久久久av福利| 国产成人精品在线播放| 欧美美最猛性xxxxxx| 国产亚洲一区精品| 久久久久久久久久久人体| 久久97精品久久久久久久不卡| 亚洲欧美日韩国产中文专区| 亚洲精美色品网站| 性亚洲最疯狂xxxx高清| 91色琪琪电影亚洲精品久久| 久久九九亚洲综合| 久久久久久久色| 91欧美视频网站| 午夜精品www| 亚洲一区二区久久久久久久| 国产精品欧美亚洲777777| 97免费在线视频| 久久国产精品电影| 亚洲第一综合天堂另类专| 日本三级韩国三级久久| 亚洲开心激情网| 久久亚洲精品一区| 日韩一区二区精品视频| 日韩精品视频在线播放| 欧美国产日本在线| 青青精品视频播放| 欧美成人一区在线| 国产成人涩涩涩视频在线观看| 国产精品美女主播在线观看纯欲| 亚洲深夜福利网站| 久久6精品影院| 欧美性生交xxxxx久久久| 久久精品国产亚洲一区二区| 国产精品美女久久久久av超清| 这里只有精品在线播放| 日韩在线观看免费全集电视剧网站| 欧美激情中文网| 日韩在线视频观看正片免费网站| 亚洲日韩欧美视频| 日韩中文字幕在线视频| 亚洲美女www午夜| 8050国产精品久久久久久| 久久久久久久久久久成人| 亚洲天堂免费观看| 亚洲国产高清高潮精品美女| 久久精品亚洲94久久精品| 亚洲欧美日韩国产精品| 日韩大陆毛片av| 欧美极品少妇全裸体| 欧美最猛性xxxxx(亚洲精品)| 日韩欧美中文第一页| 色琪琪综合男人的天堂aⅴ视频| 欧美成人免费大片| 国产欧美日韩高清| 国产精品jvid在线观看蜜臀| 国产97在线|日韩| 亚洲精品欧美一区二区三区| 黑人巨大精品欧美一区二区三区| 亚洲国产日韩精品在线| 亚洲天堂av综合网| 欧美亚洲免费电影| 亚洲福利视频网站| 91精品国产高清自在线| 成人a免费视频| 国a精品视频大全| 久久99久久99精品中文字幕| 中文字幕成人精品久久不卡| 国产一区二区三区在线视频| 日韩美女在线看| 国产99久久久欧美黑人| 亚洲精品成人久久电影| 成人午夜高潮视频| 久久久久99精品久久久久| 亚洲欧美日韩中文视频| 九九精品视频在线观看| 欧美成人在线免费| 国产精品一区二区久久精品| 亚洲欧美日韩成人| 国产精品自产拍在线观| 久久久久久久久久久久久久久久久久av| www国产精品视频| 日韩欧美亚洲综合| 91精品啪在线观看麻豆免费| 热久久这里只有精品| 欧美日韩一区二区精品| 日韩在线观看电影| 国产自产女人91一区在线观看| 久久久www成人免费精品|