日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

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

深入解析C++編程中的純虛函數和抽象類

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

這篇文章主要介紹了深入解析C++編程中的純虛函數和抽象類,是C++入門學習中的基礎知識,需要的朋友可以參考下

C++純虛函數詳解

有時在基類中將某一成員函數定為虛函數,并不是基類本身的要求,而是考慮到派生類的需要,在基類中預留了一個函數名,具體功能留給派生類根據需要去定義。

純虛函數是在聲明虛函數時被“初始化”為0的函數。聲明純虛函數的一般形式是

 

 
  1. virtual 函數類型 函數名 (參數表列) = 0; 

關于純虛函數需要注意的幾點:

純虛函數沒有函數體;

最后面的“=0”并不表示函數返回值為0,它只起形式上的作用,告訴編譯系統“這是純虛函數”;

這是一個聲明語句,最后應有分號。

純虛函數只有函數的名字而不具備函數的功能,不能被調用。它只是通知編譯系統:“在這里聲明一個虛函數,留待派生類中定義”。在派生類中對此函數提供定義后,它才能具備函數的功能,可被調用。

純虛函數的作用是在基類中為其派生類保留一個函數的名字,以便派生類根據需要對它進行定義。

如果在基類中沒有保留函數名字,則無法實現多態性。如果在一個類中聲明了純虛函數,而在其派生類中沒有對該函數定義,則該虛函數在派生類中仍然為純虛函數。

再談C++抽象類

如果聲明了一個類,一般可以用它定義對象。但是在面向對象程序設計中,往往有一些類,它們不用來生成對象。定義這些類的惟一目的是用它作為基類去建立派生類。它們作為一種基本類型提供給用戶,用戶在這個基礎上根據自己的需要定義出功能各異的派生類。用這些派生類去建立對象。

打個比方,汽車制造廠往往向客戶提供卡車的底盤(包括發動機、傳動部分、車輪等),組裝廠可以把它組裝成貨車、公共汽車、工程車或客車等不同功能的車輛。底盤本身不是車輛,要經過加工才能成為車輛,但它是車輛的基本組成部分。它相當于基類。在現代化的生產中,大多采用專業化的生產方式,充分利用專業化工廠生產的部件,加工集成為新品種的產品。生產公共汽車的廠家決不會從制造發動機到生產輪胎、制造車廂都由本廠完成。其實,不同品牌的電腦里面的基本部件是一樣的或相似的。這種觀念對軟件開發是十分重要的。一個優秀的軟件工作者在開發一個大的軟件時,決不會從頭到尾都由自己編寫程序代碼,他會充分利用已有資源(例如類庫)作為自己工作的基礎。

這種不用來定義對象而只作為一種基本類型用作繼承的類,稱為抽象類(abstract class ),由于它常用作基類,通常稱為抽象基類(abstract base class )。凡是包含純虛函數的類都是抽象類。因為純虛函數是不能被調用的,包含純虛函數的類是無法建立對象的。

抽象類的作用是作為一個類族的共同基類,或者說,為一個類族提供一個公共接口。一個類層次結構中當然也可不包含任何抽象類,每一層次的類都是實際可用的,可以用來建立對象的。

但是,許多好的面向對象的系統,其層次結構的頂部是一個抽象類,甚至頂部有好幾層都是抽象類。

如果在抽象類所派生出的新類中對基類的所有純虛函數進行了定義,那么這些函數就被賦予了功能,可以被調用。這個派生類就不是抽象類,而是可以用來定義對象的具體類(concrete class )。

如果在派生類中沒有對所有純虛函數進行定義,則此派生類仍然是抽象類,不能用來定義對象。雖然抽象類不能定義對象(或者說抽象類不能實例化),但是可以定義指向抽象類數據的指針變量。當派生類成為具體類之后,就可以用這種指針指向派生類對象,然后通過該指針調用虛函數,實現多態性的操作。

幾個關于C++純虛函數與抽象類的實例

下面是一個完整的程序,為了便于閱讀,分段插入了一些文字說明。程序如下:

第(1)部分

 

  1. #include <iostream> 
  2. using namespace std; 
  3. //聲明抽象基類Shape 
  4. class Shape 
  5. public
  6. virtual float area( )const {return 0.0;} //虛函數 
  7. virtual float volume()const {return 0.0;} //虛函數 
  8. virtual void shapeName()const =0; //純虛函數 
  9. }; 

Shape類有3個成員函數,沒有數據成員。3個成員函數都聲明為虛函數,其中shapeName聲明為純虛函數,因此Shape是一個抽象基類。shapeName函數的作用是輸出具體的形狀(如點、圓、圓柱體)的名字,這個信息是與相應的派生類密切相關的,顯然這不應當在基類中定義,而應在派生類中定義。所以把它聲明為純虛函數。Shape雖然是抽象基類,但是也可以包括某些成員的定義部分。類中兩個函數area(面積)和volume (體積)包括函數體,使其返回值為0(因為可以認為點的面積和體積都為0)。由于考慮到在Point類中不再對area和volume函數重新定義,因此沒有把area和volume函數也聲明為純虛函數。在Point類中繼承了Shape類的area和volume函數。這3個函數在各派生類中都要用到。

第(2)部分

 

 
  1. //聲明Point類 
  2. class Point:public Shape//Point是Shape的公用派生類 
  3. public
  4. Point(float=0,float=0); 
  5. void setPoint(float ,float ); 
  6. float getX( )const {return x;} 
  7. float getY( )const {return y;} 
  8. virtual void shapeName( )const {cout<<"Point:";}//對虛函數進行再定義 
  9. friend ostream & operator <<(ostream &,const Point &); 
  10. protected
  11. float x,y; 
  12. }; 
  13. //定義Point類成員函數 
  14. Point::Point(float a,float b) 
  15. {x=a;y=b;} 
  16. void Point::setPoint(float a,float b) 
  17. {x=a;y=b;} 
  18. ostream & operator <<(ostream &output,const Point &p) 
  19. output<<"["<<p.x<<","<<p.y<<"]"
  20. return output; 

Point從Shape繼承了3個成員函數,由于“點”是沒有面積和體積的,因此不必重新定義area和volume。雖然在Point類中用不到這兩個函數,但是Point類仍然從Shape類繼承了這兩個函數,以便其派生類繼承它們。shapeName函數在Shape類中是純虛函數, 在Point類中要進行定義。Point類還有自己的成員函數( setPoint, getX, getY)和數據成 員(x和y)。

第(3)部分

 

 
  1. //聲明Circle類 
  2. class Circle:public Point 
  3. public
  4. Circle(float x=0,float y=0,float r=0); 
  5. void setRadius(float ); 
  6. float getRadius( )const
  7. virtual float area( )const
  8. virtual void shapeName( )const {cout<<"Circle:";}//對虛函數進行再定義 
  9. friend ostream &operator <<(ostream &,const Circle &); 
  10. protected
  11. float radius; 
  12. }; 
  13. //聲明Circle類成員函數 
  14. Circle::Circle(float a,float b,float r):Point(a,b),radius(r){} 
  15. void Circle::setRadius(float r):radius(r){} 
  16. float Circle::getRadius( )const {return radius;} 
  17. float Circle::area( )const {return 3.14159*radius*radius;} 
  18. ostream &operator <<(ostream &output,const Circle &c) 
  19. output<<"["<<c.x<<","<<c.y<<"], r="<<c.radius; 
  20. return output; 

在Circle類中要重新定義area函數,因為需要指定求圓面積的公式。由于圓沒有體積,因此不必重新定義volume函數,而是從Point類繼承volume函數。shapeName函數是虛函數,需要重新定義,賦予新的內容(如果不重新定義,就會繼承Point類中的 shapeName函數)。此外,Circle類還有自己新增加的成員函數(setRadius, getRadius)和數據成員(radius)。

第(4)部分

 

 
  1. //聲明Cylinder類 
  2. class Cylinder:public Circle 
  3. public
  4. Cylinder (float x=0,float y=0,float r=0,float h=0); 
  5. void setHeight(float ); 
  6. virtual float area( )const
  7. virtual float volume( )const
  8. virtual void shapeName( )const { 
  9. cout<<"Cylinder:"
  10. }//對虛函數進行再定義 
  11. friend ostream& operator <<(ostream&,const Cylinder&); 
  12. protected
  13. float height; 
  14. }; 
  15. //定義Cylinder類成員函數 
  16. Cylinder::Cylinder(float a,float b,float r,float h):Circle(a,b,r),height(h){} 
  17. void Cylinder::setHeight(float h){height=h;} 
  18. float Cylinder::area( )const
  19. return 2*Circle::area( )+2*3.14159*radius*height; 
  20. float Cylinder::volume( )const
  21. return Circle::area( )*height; 
  22. ostream &operator <<(ostream &output,const Cylinder& cy){ 
  23. output<<"["<<cy.x<<","<<cy.y<<"], r="<<cy.radius<<", h="<<cy.height; 
  24. return output; 

Cylinder類是從Circle類派生的。由于圓柱體有表面積和體積,所以要對area和 volume函數重新定義。虛函數shapeName也需要重新定義。此外,Cylinder類還有自已 的成員函數setHeight和數據成員radius。

第(5)部分

 

 
  1. //main函數 
  2. int main( ) 
  3. Point point(3.2,4.5); //建立Point類對象point 
  4. Circle circle(2.4,1.2,5.6); 
  5. //建立Circle類對象circle 
  6. Cylinder cylinder(3.5,6.4,5.2,10.5); 
  7. //建立Cylinder類對象cylinder 
  8. point.shapeName(); 
  9. //靜態關聯 
  10. cout<<point<<endl; 
  11. circle.shapeName(); //靜態關聯 
  12. cout<<circle<<endl; 
  13. cylinder.shapeName(); //靜態關聯 
  14. cout<<cylinder<<endl<<endl; 
  15. Shape *pt; //定義基類指針 
  16. pt=&point; //指針指向Point類對象 
  17. pt->shapeName( ); //動態關聯 
  18. cout<<"x="<<point.getX( )<<",y="<<point.getY( )<<"/narea="<<pt->area( ) 
  19. <<"/nvolume="<<pt->volume()<<"/n/n"
  20. pt=&circle; //指針指向Circle類對象 
  21. pt->shapeName( ); //動態關聯 
  22. cout<<"x="<<circle.getX( )<<",y="<<circle.getY( )<<"/narea="<<pt->area( ) 
  23. <<"/nvolume="<<pt->volume( )<<"/n/n"
  24. pt=&cylinder; //指針指向Cylinder類對象 
  25. pt->shapeName( ); //動態關聯 
  26. cout<<"x="<<cylinder.getX( )<<",y="<<cylinder.getY( )<<"/narea="<<pt->area( ) 
  27. <<"/nvolume="<<pt->volume( )<<"/n/n"
  28. return 0; 

在主函數中調用有關函數并輸出結果。先分別定義了 Point類對象point,Circle類對象circle和Cylinder類對象cylinder。然后分別通過對象名point, circle和cylinder調用 了shapeNanme函數,這是屬于靜態關聯,在編譯階段就能確定應調用哪一個類的 shapeName函數。同時用重載的運箅符“<<”來輸出各對象的信息,可以驗證對象初始化是否正確。

再定義一個指向基類Shape對象的指針變量pt,使它先后指向3個派生類對象 point, Circle和cylinder,然后通過指針調用各函數,如 pt->shapeName( ),pt ->area(), pt->volume( )。這時是通過動態關聯分別確定應該調用哪個函數。分別輸出不同類對象的信息。

程序運行結果如下:

 

 
  1. Point:[3.2,4.5](Point類對象point的數據:點的坐標) 
  2. Circle:[2.4,1.2], r=5.6 (Circle類對象circle的數據:圓心和半徑) 
  3. Cylinder:[3.5,6.4], r=5.5, h=10.5 (Cylinder類對象cylinder的數據: 圓心、半徑和高) 
  4.  
  5. Point:x=3.2,y=4.5 (輸出Point類對象point的數據:點的坐標) 
  6. area=0 (點的面積) 
  7. volume=0 (點的體積) 
  8.  
  9. Circle:x=2.4,y=1.2 (輸出Circle類對象circle的數據:圓心坐標) 
  10. area=98.5203 (圓的面積) 
  11. volume=0 (圓的體積) 
  12. Cylinder:x=3.5,y=6.4 (輸出Cylinder類對象cylinder的數據:圓心坐標) 
  13. area=512.595 (圓的面積) 
  14. volume=891.96 (圓柱的體積) 

從本例可以進一步明確以下結論:

一個基類如果包含一個或一個以上純虛函數,就是抽象基類。抽象基類不能也不必要定義對象。

抽象基類與普通基類不同,它一般并不是現實存在的對象的抽象(例如圓形(Circle)就是千千萬萬個實際的圓的抽象),它可以沒有任何物理上的或其他實際意義方面的含義。

在類的層次結構中,頂層或最上面的幾層可以是抽象基類。抽象基類體現了本類族中各類的共性,把各類中共有的成員函數集中在抽象基類中聲明。

抽象基類是本類族的公共接口?;蛘哒f,從同一基類派生出的多個類有同一接口。

區別靜態關聯和動態關聯。如果是通過對象名調用虛函數(如point.shapeName()),在編譯階段就能確定調用的是哪一個類的虛函數,所以屬于靜態關聯。 如果是通過基類指針調用虛函數(如pt ->shapeName()),在編譯階段無法從語句本身確定調用哪一個類的虛函數,只有在運行時,pt指向某一類對象后,才能確定調用的是哪 一個類的虛函數,故為動態關聯。

如果在基類聲明了虛函數,則在派生類中凡是與該函數有相同的函數名、函數類型、參數個數和類型的函數,均為虛函數(不論在派生類中是否用virtual聲明)。

使用虛函數提高了程序的可擴充性。把類的聲明與類的使用分離。這對于設計類庫的軟件開發商來說尤為重要。

開發商設計了各種各樣的類,但不向用戶提供源代碼,用戶可以不知道類是怎樣聲明的,但是可以使用這些類來派生出自己的類。利用虛函數和多態性,程序員的注意力集中在處理普遍性,而讓執行環境處理特殊性。

多態性把操作的細節留給類的設計者(他們多為專業人員)去完成,而讓程序人員(類的使用者)只需要做一些宏觀性的工作,告訴系統做什么,而不必考慮怎么做,極大地簡化了應用程序的編碼工作,大大減輕了程序員的負擔,也降低了學習和使用C++編程的難度,使更多的人能更快地進入C++程序設計的大門。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
欧美日韩一级黄| 国产高清大尺度一区二区不卡| 日韩免费电影网站| 一区二区视频在线| 日韩手机在线观看视频| 日韩欧美专区在线| 日韩不卡高清视频| 免费精品国产自产拍观看| 国产高清一区| 99精品视频99| 日本一欧美一欧美一亚洲视频| 国产婷婷一区二区| 国产三级视频在线| 欧美日韩亚洲一区| 精品久久久久久无| 中文字幕亚洲国产| 日韩中文字幕在线视频观看| 中文字幕亚洲视频| av不卡免费看| 日韩欧美一二三| 国产91大片| 欧美日韩性视频一区二区三区| 国产69精品久久久久孕妇国产69久久| 国产字幕在线看| 91麻豆精品在线| 亚洲午夜av| 国产蜜臀在线| 中文字幕精品在线播放| 国产日韩精品久久久| 视频一区三区| 国产成人精品综合久久久| 中文字幕在线播出| 国产区在线看| 亚洲三级中文字幕| 国产福利久久久| 免费看ww视频网站入口| 亚洲欧美999| 日韩中文字幕综合| 国产绿帽一区二区三区| 日韩国产专区| 日本不卡免费高清视频| 欧美乱大交xxxxx另类| 不卡视频一区二区三区| 亚洲深夜福利| 国产在线导航| 欧美1234区| 亚洲国产专区| 日韩中文字幕观看| 亚洲成a人片在线www| 国产欧美日韩中文| 欧洲精品二区| 欧美日韩精品在线| 日韩av一区在线| 亚洲乱码中文字幕综合| 日韩欧美在线网址| 黄色在线播放网站| 国产在线一在线二| 国产亚洲短视频| 日韩精品大片| av免费在线网站| 国产伦精品免费视频| 中文在线а√在线8| 久久精品日韩无码| 欧美一级在线观看| 影音先锋一区二区资源站| 亚洲精品中文字幕乱码三区不卡| 日韩欧美在线视频| 99pao成人国产永久免费视频| 1区不卡电影| 国产一区 二区 三区一级| 一区二区三区精品在线观看| 国产福利在线看| 欧美日韩中文| 91麻豆精品在线| 欧美.日韩.国产.一区.二区| 欧美成人二区| 欧美激情视频一区二区三区在线播放| 国产成人精品网址| 日韩精品不卡一区二区| 日韩视频中文字幕| 日韩精品视频在线| 精品久久在线观看| 国产福利精品导航| 日韩精品大片| 日本啊v在线| 亚洲一级网站| 国产资源在线观看| 精品一二三四| 亚洲一区中文在线| 欧美日韩中文字幕视频| 日韩亚洲国产欧美| 91精品国产高清91久久久久久| 99精品人妻国产毛片| 中文字幕欧美国内| 一区二区不卡久久精品| 国产日韩精品在线看| 亚洲综合日韩中文字幕v在线| 亚洲一区在线观看免费| 国产视频中文字幕| 欧美国产一级片| wwwww亚洲| 一区在线视频观看| 国产欧美三级| 国产欧美综合在线| 又黄又www的网站| 国产一区久久| 久久精品日韩无码| 欧美 日韩 国产在线| 欧美一级日韩一级| 深夜福利一区| 91av久久久| 91精品久久久久久久久久| 黄色一区二区在线观看| 国产网站av| 欧美日韩在线精品成人综合网| 日韩欧美国产午夜精品| 国产在线一在线二| 亚洲.国产.中文慕字在线| 精品视频www| 精品国产31久久久久久| 欧美一级在线免费| 91久久精品在线| 中文字幕在线播出| 日韩精品不卡一区二区| 成人欧美亚洲| 欧美国产小视频| 日韩在线视频观看| 日韩精品视频中文字幕| 欧美日韩精品在线| 不卡福利视频| av免费观看国产| 亚洲久草视频| 欧美在线视频二区| 91精品在线观| 精品久久香蕉国产线看观看gif| 91久久久精品国产| 日韩免费视频一区| 中文字幕在线观看网址| 欧美日韩久久久| 一区精品在线播放| 亚洲日本欧美日韩高观看| 精品日韩视频| 国产高清在线一区| 欧美精选午夜久久久乱码6080| 91日韩中文字幕| 不卡中文一二三区| 国产三级精品网站| 国产午夜精品一区二区三区视频| 在线观看av的网站| 中文字幕2020第一页| 国产日韩第一页v| 日韩一级二级三级精品视频| 国产一区在线观看视频| 欧美日韩高清在线| 欧美在线日韩在线| 91精品视频播放| 欧美日韩综合在线免费观看| 亚洲影视资源网| 日韩亚洲欧美中文三级| 亚洲三级免费看| 欧美日韩精品综合在线| 国产黄色在线观看| 国产专区中文字幕| 欧美久久久久久蜜桃| 91精品国产手机| 精品日韩一区二区三区免费视频| 在线免费视频一区二区| 国产精品一区二三区| 日韩免费电影网站| 黄色一级大片在线免费看国产一| 欧美日韩乱国产| 在线观看区一区二| 欧美一级手机免费观看片| 欧美日韩尤物久久| 欧美亚洲视频在线看网址| 国产在线观看精品| 一区二区三区免费看视频| 国产婷婷一区二区| 久久久精品免费免费| 你懂的亚洲视频| 日韩美女中文字幕| 国产在线看一区| 99综合视频| 日韩精品久久久| 国产视频2区| 不卡一二三区| 国产成人精品999在线观看| 久久精品一二三| 欧美日韩国产高清| 国产一二三精品| 日韩欧美国产黄色| 51精品免费网站| 亚洲欧美中文字幕在线一区| 国产午夜精品一区二区三区视频| 精品日韩欧美| 精品成人久久av| 中文字幕日韩视频| 亚洲视频电影在线| 日韩欧美色综合网站| 日本一级一片免费视频| 欧美一级一级性生活免费录像| 国内精品不卡| 日韩精品 欧美| 精品三级av| 天天综合天天添夜夜添狠狠添| 一区二区三区在线播放欧美| 亚洲国产综合久久| 免费在线观看国产黄| 69堂精品视频在线播放| 国精品产品一区| 91精品国产91久久久久久久久| 国产欧美日韩中文字幕在线| 亚洲女人天堂色在线7777| 国产免费电影网站入口| 亚洲图片小说综合| 欧美日韩国产亚洲一区| 国产免费一级片| 亚洲最新永久观看在线| 国产欧美日韩91| 日韩av一区二区在线| 日韩精品福利视频| 亚洲成av人片在线| 日本精品在线中文字幕| 日韩黄色在线播放| 精品激情国产视频| 日韩精品福利一区二区三区| 国产99对白在线播放| 自拍日韩亚洲一区在线| 亚洲图片小说综合| av免费观看国产| 精品乱人伦一区二区三区| 免费日韩精品中文字幕视频在线| 欧美日韩一二| 国产一级一片免费播放| 欧美中文字幕在线视频| 欧美日韩国产综合久久| 首页国产欧美久久| 日韩欧美国产成人精品免费| 欧美黄页在线免费观看| 伊人中文字幕在线观看| 成年人黄国产| 日韩欧美国产亚洲| 91精品国产91久久久久久青草 | 中文字幕最新精品| 久久久久黄色| 日韩欧美国产片| 免费在线视频一级不卡| 欧美日韩国产不卡在线看| 精品日韩在线| 日本啊v在线| 成人a在线观看| 日韩精品三级| 亚洲高清不卡一区| 日韩欧美中文字幕公布| www在线视频| 中文字幕2020第一页| 视频一区二区精品的福利| 国产区在线看| 日本不卡视频一区| 日韩欧美一二三区| 一本一道久久a久久精品综合蜜臀| 日韩不卡在线观看| 欧美中文字幕在线视频| 午夜影院在线观看欧美| 欧美性极品xxxx做受| 久久91精品久久久久久秒播| 日韩在线观看视频一区二区| 刘玥91精选国产在线观看| 久久精品久久久久| 一区在线免费| 成人一区二区不卡免费| 欧美日韩在线中文字幕| 亚洲黄页一区| 午夜一区二区三区免费| 91精品国产综合久久久久久漫画| 精品一区二区三区中文字幕 | 日韩欧美综合视频| 精品一区二区三区中文字幕 | 蜜臀91精品国产高清在线观看| 国产一级视频在线播放| 日韩一级免费在线观看| 日韩精品视频在线观看网址| 日韩欧美三级| 国产在线观看黄色| 欧美日韩免费视频| 午夜视频在线观看一区| 国产欧美日韩综合精品| 91精品高清| 精品婷婷伊人一区三区三| 日韩精品免费观看视频| 日韩高清在线一区二区| 一区二区日韩视频| 视频一区日韩| 国产日韩精品电影| 91精品视频播放| 欧美日韩中文字幕精品| 一级片免费在线| 亚洲一区在线观看网站| 在线黄色国产电影| 欧美亚洲国产日韩| 一区二区不卡在线播放| √新版天堂资源在线资源| 香蕉人人精品| 亚洲福利在线观看| 97久久精品| 国产视频一区三区| 日韩欧美三级在线| 精品视频久久| 亚洲羞羞网站| 中文网丁香综合网| 91麻豆免费视频网站| 伊人永久在线| 精品国产不卡一区二区| 日韩在线a电影| 久久久久蜜桃| 欧美区高清在线| 欧美日韩在线中文字幕| 日韩精品在线观| 一本一道久久a久久精品综合蜜臀| 欧美久久一二三四区| 中文字幕精品国产| 在线资源av| 久久69成人| 国产字幕在线看| 欧美日韩在线视频免费观看| 精品在线一区二区| 中文字幕日韩精品在线| 国产视频一区三区| 欧美激情一区二区在线| 日韩不卡一区二区| 一区免费视频| 粉嫩喷白浆久久| 亚洲一区视频在线观看视频| 日韩欧美成人一区二区三区| 日韩精品第一区| 中文字幕亚洲欧美| 国产黄色在线播放| 在线不卡日本| 蜜桃精品在线| 午夜国产视频 | 国产福利精品导航| 日韩欧美国产成人精品免费| 91九色精品视频| 日韩av一区二| 亚洲永久字幕| 国产伦精品免费视频| 日韩一级免费视频| 国产一区精品在线| 日韩精品在线免费播放| 国产欧美日韩综合| 国产欧美久久久久久久久| 国产在线一在线二| 中文字幕无线码一区| 日韩欧美中文字幕在线观看| 99精品视频国产| 久久婷婷中文字幕| 精品视频—区二区三区免费| 国产在线欧美| 精品在线一区二区三区| 一区二区三区高清在线| 欧美日韩精品在线观看| 亚洲成a人片在线www| 中文字幕亚洲区| 久久99久久久久久久噜噜| 欧美天堂一区二区| 黄色一区二区视频| 久久久久久自在自线| 色综合天天性综合| 国产高清在线观看| 国产区日韩欧美| 亚洲视频日韩| 中文精品在线| 中文字幕精品国产| 久久精品在线观看| 日韩欧美一级视频| 日韩专区中文字幕| 免费视频一区三区| 极品久久久久久| 日韩精品在线视频| 久久婷婷国产| 一区二区三区精品久久久| 精品成人久久久| 日韩欧美一二三| 91精品免费在线观看| 中文字幕最新精品| 国产第一页在线播放| 伊人精品视频| 欧美一级二级三级区| 日韩视频在线一区二区三区| 国产欧美日韩91| 一本一道综合狠狠老| 国产www在线观看| 日本亚洲欧美| 日韩免费电影网站| 色偷偷一区二区三区| 一本大道一区二区三区| 亚洲综合在线不卡| 国产一级在线播放| 国产欧美一级| 日本熟女一区二区|