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

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

解析C++中多層派生時的構造函數及一些特殊形式

2020-05-23 14:14:10
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了解析C++中多層派生時的構造函數及一些特殊形式,特殊形式主要針對基類和子對象類型的構造函數內容,需要的朋友可以參考下

C++多層派生時的構造函數

一個類不僅可以派生出一個派生類,派生類還可以繼續派生,形成派生的層次結構。在上面敘述的基礎上,不難寫出在多級派生情況下派生類的構造函數。

通過例下面的程序,讀者可以了解在多級派生情況下怎樣定義派生類的構造函數。相信大家完全可以自己看懂這個程序。

[例] 多級派生情況下派生類的構造函數。

 

 
  1. #include <iostream> 
  2. #include<string> 
  3. using namespace std; 
  4. class Student//聲明基類 
  5. public://公用部分 
  6. Student(int n, string nam)//基類構造函數 
  7. num=n; 
  8. name=nam; 
  9. void display( )//輸出基類數據成員 
  10. cout<<"num:"<<num<<endl; 
  11. cout<<"name:"<<name<<endl; 
  12. protected://保護部分 
  13. int num;//基類有兩個數據成員 
  14. string name; 
  15. }; 
  16. class Student1: public Student//聲明公用派生類Student1 
  17. public
  18. Student1(int n,char nam[10],int a):Student(n,nam)//派生類構造函數 
  19. {age=a;}//在此處只對派生類新增的數據成員初始化 
  20. void show( ) //輸出num,name和age 
  21. display( ); //輸出num和name 
  22. cout<<"age: "<<age<<endl; 
  23. private://派生類的私有數據 
  24. int age; //增加一個數據成員 
  25. }; 
  26. class Student2:public Student1 //聲明間接公用派生類Student2 
  27. public://下面是間接派生類構造函數 
  28. Student2(int n, string nam,int a,int s):Student1(n,nam,a) {score=s;} 
  29. void show_all( ) //輸出全部數據成員 
  30. show( ); //輸出num和name 
  31. cout<<"score:"<<score<<endl; //輸出age 
  32. private
  33. int score; //增加一個數據成員 
  34. }; 
  35. int main( ) 
  36. Student2 stud(10010,"Li",17,89); 
  37. stud.show_all( ); //輸出學生的全部數據 
  38. return 0; 

運行時的輸出如下:

 

 
  1. num:10010 
  2. name:Li 
  3. age:17 
  4. score:89 

請注意基類和兩個派生類的構造函數的寫法。

基類的構造函數首部:

 

 
  1. Student(int n, string nam) 

派生類Student1的構造函數首部:

 

 
  1. Student1(int n, string nam],int a):Student(n,nam) 

派生類Student2的構造函數首部:

 

 
  1. Student2(int n, string nam,int a,int s):Student1(n,nam,a) 

注意不要寫成:

 

 
  1. Student2(int n, string nam,int a,int s):Student1(n,nam),student1(n, nam, a) 

不要列出每一層派生類的構造函數,只需寫出其上一層派生類(即它的直接基類)的構造函數即可。在聲明Student2類對象時,調用Student2構造函數;在執行Student2構造函數時,先調用Student1構造函數;在執行Student1構造函數時,先調用基類Student構造函數。初始化的順序是:

先初始化基類的數據成員num和name。

再初始化Student1的數據成員age。

最后再初始化Student2的數據成員score。

C++派生類構造函數的特殊形式

在使用派生類構造函數時,有以下特殊的形式。

1) 當不需要對派生類新增的成員進行任何初始化操作時,派生類構造函數的函數體可以為空,即構造函數是空函數,函數體為空時,派生類構造函數的參數個數等于基類構造函數和子對象的參數個數之和,派生類構造函數的全部參數都傳遞給基類構造函數和子對象,在調用派生類構造函數時不對派生類的數據成員初始化。此派生類構造函數的作用只是為了將參數傳遞給基類構造函數和子對象,并在執行派生類構造函數時調用基類構造函數和子對象構造函數。在實際工作中常見這種用法。

2) 如果在基類中沒有定義構造函數,或定義了沒有參數的構造函數,那么在定義派生類構造函數時可不寫基類構造函數。因為此時派生類構造函數沒有向基類構造函數傳遞參數的任務。調用派生類構造函數時系統會自動首先調用基類的默認構造函數。

如果在基類和子對象類型的聲明中都沒有定義帶參數的構造函數,而且也不需對派生類自己的數據成員初始化,則可以不必顯式地定義派生類構造函數。因為此時派生類構造函數既沒有向基類構造函數和子對象構造函數傳遞參數的任務,也沒有對派生類數據成員初始化的任務。

在建立派生類對象時,系統會自動調用系統提供的派生類的默認構造函數,并在執行派生類默認構造函數的過程中,調用基類的默認構造函數和子對象類型默認構造函數。

如果在基類或子對象類型的聲明中定義了帶參數的構造函數,那么就必須顯式地定義派生類構造函數,并在派生類構造函數中寫出基類或子對象類型的構造函數及其參數表。

如果在基類中既定義無參的構造函數,又定義了有參的構造函數(構造函數重載),則在定義派生類構造函數時,既可以包含基類構造函數及其參數,也可以不包含基類構造函數。

在調用派生類構造函數時,根據構造函數的內容決定調用基類的有參的構造函數還是無參的構造函數。編程者可以根據派生類的需要決定采用哪一種方式。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲人成电影在线播放| 欧美性猛交xxxx免费看久久久| 91国内揄拍国内精品对白| 欧美乱大交xxxxx另类电影| 91高潮精品免费porn| 91在线精品视频| 久热精品视频在线免费观看| 亚洲最大福利网站| 欧美巨乳美女视频| 日韩美女视频免费看| 国产精品自产拍在线观看中文| 亚洲一区二区三区久久| 久久精彩免费视频| 91久久久久久国产精品| 97在线观看免费高清| 欧美精品久久久久久久| 日韩成人中文字幕| 国产91精品不卡视频| 国产午夜精品一区理论片飘花| 亚洲美女av网站| 91久久久久久久久久| 亚洲精品国产福利| 成人在线中文字幕| 久久久国产视频| 国产精品欧美久久久| 91亚洲精品一区二区| 亚洲成人三级在线| 91久久久久久久久久久久久| 日韩精品免费视频| 2019中文字幕在线观看| 5252色成人免费视频| 九九九热精品免费视频观看网站| 国产精国产精品| 国产亚洲精品日韩| 久久乐国产精品| 国产精品偷伦视频免费观看国产| 91精品国产色综合| 国产精品美女av| 亚洲第一精品夜夜躁人人躁| 国产一区视频在线播放| 亚洲字幕在线观看| 日韩精品在线视频美女| 亚洲欧美国产日韩中文字幕| 国产成人精品免高潮费视频| 国产区亚洲区欧美区| 国产精品日日做人人爱| 国语自产偷拍精品视频偷| 久久精视频免费在线久久完整在线看| 国产精品福利片| 亚洲人免费视频| 日韩www在线| 久久久女女女女999久久| 亚洲免费视频在线观看| 日韩成人中文字幕| 欧美成人亚洲成人| 日韩电影中文字幕在线| 亚洲精品国产品国语在线| 一区二区三区视频免费| 91精品视频在线播放| 国产精品视频久久久| 国产亚洲视频在线观看| 亚洲精品自拍偷拍| 91影视免费在线观看| 福利视频一区二区| 日韩亚洲第一页| 亚洲欧美日韩精品| 欧美成人免费va影院高清| 91香蕉国产在线观看| 亚洲精品www| 亚洲欧洲激情在线| 国产69精品99久久久久久宅男| 亚洲一区二区久久久久久久| 视频在线一区二区| 欧美大成色www永久网站婷| 久久久久久久久久国产精品| 欧美俄罗斯乱妇| 97久久超碰福利国产精品…| 色悠悠久久久久| 日韩一区二区欧美| 日韩成人在线视频网站| 亚洲精品二三区| 成人黄色免费网站在线观看| 国产精品入口免费视| 国产精品一区二区三区成人| 日韩中文有码在线视频| 久久精品国产精品| 久久青草精品视频免费观看| 尤物yw午夜国产精品视频明星| 丝袜美腿亚洲一区二区| 日本欧美一级片| 日韩精品视频在线| 久久精品人人做人人爽| 亚洲精品日韩在线| 日本一区二区三区四区视频| 欧美日韩一区二区免费在线观看| 综合网日日天干夜夜久久| 亚洲免费成人av电影| 久久久久久久久电影| 国产+成+人+亚洲欧洲| 国产精品久久久久久久久久新婚| 亚洲国产精彩中文乱码av在线播放| 日本欧美中文字幕| 亚洲午夜女主播在线直播| 精品色蜜蜜精品视频在线观看| 欧美成人黑人xx视频免费观看| 伦理中文字幕亚洲| 欧美国产日韩视频| 久久久久久一区二区三区| 日韩经典中文字幕在线观看| 欧美日韩性视频在线| 91精品视频专区| 欧美专区在线播放| 亚洲图片在线综合| 26uuu另类亚洲欧美日本老年| 欧美性视频精品| 狠狠爱在线视频一区| 久久免费视频这里只有精品| 91精品国产91久久| 国语对白做受69| 隔壁老王国产在线精品| 亚洲成人精品视频在线观看| 日本国产欧美一区二区三区| 欧美日韩亚洲天堂| 亚洲欧美国产视频| 欧美日韩中国免费专区在线看| 最近2019年日本中文免费字幕| 国产精品成人久久久久| 亚洲在线观看视频网站| 黄色一区二区三区| 日韩精品在线播放| 亚洲福利视频久久| 亚洲欧美精品在线| 亚洲字幕一区二区| 国产精品美女免费看| 91中文在线观看| 亚洲国产精品福利| 日本精品久久久| 亚洲精品国产精品乱码不99按摩| 亚洲最大av网站| 亚洲欧美精品在线| 欧美性生活大片免费观看网址| 欧美成人精品在线播放| 国产在线视频一区| 成人国产精品一区| 欧美日韩第一页| 国产香蕉97碰碰久久人人| 国产精品久久久久久亚洲调教| 91精品国产综合久久久久久久久| 国产精品丝袜一区二区三区| 成人免费大片黄在线播放| 欧美性猛交xxxx久久久| 国产精品激情av电影在线观看| 一本色道久久88综合日韩精品| 欧美不卡视频一区发布| 国产精品视频导航| 一区二区三区国产在线观看| 久久久视频在线| 国产一区二区黑人欧美xxxx| 日本免费一区二区三区视频观看| 色诱女教师一区二区三区| 中文字幕av一区| 国产原创欧美精品| 91麻豆桃色免费看| 性色av一区二区三区在线观看|