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

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

詳解C++編程的多態(tài)性概念

2020-05-23 14:14:22
字體:
供稿:網(wǎng)友

這篇文章主要介紹了C++編程的多態(tài)性概念,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下

多態(tài)性(polymorphism)是面向?qū)ο蟪绦蛟O(shè)計的一個重要特征。如果一種語言只支持類而不支持多態(tài),是不能被稱為面向?qū)ο笳Z言的,只能說是基于對象的,如Ada、VB就屬此類。C++支持多態(tài)性,在C++程序設(shè)計中能夠?qū)崿F(xiàn)多態(tài)性。利用多態(tài)性可以設(shè)計和實現(xiàn)一個易于擴展的系統(tǒng)。

顧名思義,多態(tài)的意思是一個事物有多種形態(tài)。多態(tài)性的英文單詞polymorphism來源于希臘詞根poly(意為“很多”)和morph(意為“形態(tài)”)。在C ++程序設(shè)計中,多態(tài)性是指具有不同功能的函數(shù)可以用同一個函數(shù)名,這樣就可以用一個函數(shù)名調(diào)用不同內(nèi)容的函數(shù)。在面向?qū)ο蠓椒ㄖ幸话闶沁@樣表述多態(tài)性的:向不同的對象發(fā)送同一個消息, 不同的對象在接收時會產(chǎn)生不同的行為(即方法)。也就是說,每個對象可以用自己的方式去響應(yīng)共同的消息。所謂消息,就是調(diào)用函數(shù),不同的行為就是指不同的實現(xiàn),即執(zhí)行不同的函數(shù)。

其實,我們已經(jīng)多次接觸過多態(tài)性的現(xiàn)象,例如函數(shù)的重載、運算符重載都是多態(tài)現(xiàn)象。只是那時沒有用到多態(tài)性這一專門術(shù)語而已。例如,使用運算符“+”使兩個數(shù)值相加,就是發(fā)送一個消息,它要調(diào)用operator +函數(shù)。實際上,整型、單精度型、雙精度型的加法操作過程是互不相同的,是由不同內(nèi)容的函數(shù)實現(xiàn)的。顯然,它們以不同的行為或方法來響應(yīng)同一消息。

在現(xiàn)實生活中可以看到許多多態(tài)性的例子。如學(xué)校校長向社會發(fā)布一個消息:9月1日新學(xué)年開學(xué)。不同的對象會作出不同的響應(yīng):學(xué)生要準(zhǔn)備好課本準(zhǔn)時到校上課;家長要籌集學(xué)費;教師要備好課;后勤部門要準(zhǔn)備好教室、宿舍和食堂……由于事先對各種人的任務(wù)已作了規(guī)定,因此,在得到同一個消息時,各種人都知道自己應(yīng)當(dāng)怎么做,這就是 多態(tài)性。可以設(shè)想,如果不利用多態(tài)性,那么校長就要分別給學(xué)生、家長、教師、后勤部門等許多不同的對象分別發(fā)通知,分別具體規(guī)定每一種人接到通知后應(yīng)該怎么做。顯然這是一件十分復(fù)雜而細致的工作。一人包攬一切,吃力還不討好?,F(xiàn)在,利用了多態(tài)性機制,校長在發(fā)布消息時,不必一一具體考慮不同類型人員是怎樣執(zhí)行的。至于各類人員在接到消息后應(yīng)氣做什么,并不是臨時決定的,而是學(xué)校的工作機制事先安排決定好的。校長只需不斷發(fā)布各種消息,各種人員就會按預(yù)定方案有條不紊地工作。

同樣,在C++程序設(shè)計中,在不同的類中定義了其響應(yīng)消息的方法,那么使用這些類 時,不必考慮它們是什么類型,只要發(fā)布消息即可。正如在使用運算符“ ”時不必考慮相加的數(shù)值是整型、單精度型還是雙精度型,直接使用“+”,不論哪類數(shù)值都能實現(xiàn)相加。可以說這是以不變應(yīng)萬變的方法,不論對象千變?nèi)f化,用戶都是用同一形式的信息去調(diào)用它們,使它們根據(jù)事先的安排作出反應(yīng)。

從系統(tǒng)實現(xiàn)的角度看,多態(tài)性分為兩類:靜態(tài)多態(tài)性和動態(tài)多態(tài)性。以前學(xué)過的函數(shù)重載和運算符重載實現(xiàn)的多態(tài)性屬于靜態(tài)多態(tài)性,在程序編譯時系統(tǒng)就能決定調(diào)用的是哪個函數(shù),因此靜態(tài)多態(tài)性又稱編譯時的多態(tài)性。靜態(tài)多態(tài)性是通過函數(shù)的重載實現(xiàn)的(運算符重載實質(zhì)上也是函數(shù)重載)。動態(tài)多態(tài)性是在程序運行過程中才動態(tài)地確定操作所針對的對象。它又稱運行時的多態(tài)性。動態(tài)多態(tài)性是通過虛函數(shù)(Virtual fiinction)實現(xiàn)的。

下面是一個承上啟下的例子。一方面它是有關(guān)繼承和運算符重載內(nèi)容的綜合應(yīng)用的例子,通過這個例子可以進一步融會貫通前面所學(xué)的內(nèi)容,另一方面又是作為討論多態(tài)性的一個基礎(chǔ)用例。

希望大家耐心、深入地閱讀和消化這個程序,弄清其中的每一個細節(jié)。

[例] 先建立一個Point(點)類,包含數(shù)據(jù)成員x,y(坐標(biāo)點)。以它為基類,派生出一個Circle(圓)類,增加數(shù)據(jù)成員r(半徑),再以Circle類為直接基類,派生出一個Cylinder(圓柱體)類,再增加數(shù)據(jù)成員h(高)。要求編寫程序,重載運算符“<<”和“>>”,使之能用于輸出以上類對象。

這個例題難度不大,但程序很長。對于一個比較大的程序,應(yīng)當(dāng)分成若干步驟進行。先聲明基類,再聲明派生類,逐級進行,分步調(diào)試。

1) 聲明基類Point

類可寫出聲明基類Point的部分如下:

 

  1. #include <iostream> 
  2. //聲明類Point 
  3. class Point 
  4. public
  5. Point(float x=0,float y=0); //有默認參數(shù)的構(gòu)造函數(shù) 
  6. void setPoint(float ,float); //設(shè)置坐標(biāo)值 
  7. float getX( )const {return x;} //讀x坐標(biāo) 
  8. float getY( )const {return y;} //讀y坐標(biāo) 
  9. friend ostream & operator <<(ostream &,const Point &); //重載運算符“<<” 
  10. protected//受保護成員 
  11. float x, y; 
  12. }; 
  13. //下面定義Point類的成員函數(shù) 
  14. Point::Point(float a,float b) //Point的構(gòu)造函數(shù) 
  15. //對x,y初始化 
  16. x=a; 
  17. y=b; 
  18. void Point::setPoint(float a,float b) //設(shè)置x和y的坐標(biāo)值 
  19. //為x,y賦新值 
  20. x=a; 
  21. y=b; 
  22. //重載運算符“<<”,使之能輸出點的坐標(biāo) 
  23. ostream & operator <<(ostream &output, const Point &p) 
  24. output<<"["<<p.x<<","<<p.y<<"]"<<endl; 
  25. return output; 

以上完成了基類Point類的聲明。

為了提高程序調(diào)試的效率,提倡對程序分步調(diào)試,不要將一個長的程序都寫完以后才統(tǒng)一調(diào)試,那樣在編譯時可能會同時出現(xiàn)大量的編譯錯誤,面對一個長的程序,程序人員往往難以迅速準(zhǔn)確地找到出錯位置。要善于將一個大的程序分解為若干個文件,分別編譯,或者分步調(diào)試,先通過最基本的部分,再逐步擴充。

現(xiàn)在要對上面寫的基類聲明進行調(diào)試,檢查它是否有錯,為此要寫出main函數(shù)。實際上它是一個測試程序。

 

  1. int main( ) 
  2. Point p(3.5,6.4); //建立Point類對象p 
  3. cout<<"x="<<p.getX( )<<",y="<<p.getY( )<<endl; //輸出p的坐標(biāo)值 
  4. p.setPoint(8.5,6.8); //重新設(shè)置p的坐標(biāo)值 
  5. cout<<"p(new):"<<p<<endl; //用重載運算符“<<”輸出p點坐標(biāo) 
  6. return 0; 

getX和getY函數(shù)聲明為常成員函數(shù),作用是只允許函數(shù)引用類中的數(shù)據(jù),而不允許修改它們,以保證類中數(shù)據(jù)的安全。數(shù)據(jù)成員x和y聲明為protected,這樣可以被派生類訪問(如果聲明為private,派生類是不能訪問的)。

程序編譯通過,運行結(jié)果為:

 

 
  1. x=3.5,y=6.4 
  2. p(new):[8.5,6.8] 

測試程序檢查了基類中各函數(shù)的功能,以及運算符重載的作用,證明程序是正確的。

2)聲明派生類Circle

在上面的基礎(chǔ)上,再寫出聲明派生類Circle的部分:

 

 
  1. class Circle:public Point //circle是Point類的公用派生類 
  2. public
  3. Circle(float x=0,float y=0,float r=0); //構(gòu)造函數(shù) 
  4. void setRadius(float ); //設(shè)置半徑值 
  5. float getRadius( )const//讀取半徑值 
  6. float area ( )const//計算圓面積 
  7. friend ostream &operator <<(ostream &,const Circle &); //重載運算符“<<” 
  8. private
  9. float radius; 
  10. }; 
  11. //定義構(gòu)造函數(shù),對圓心坐標(biāo)和半徑初始化 
  12. Circle::Circle(float a,float b,float r):Point(a,b),radius(r){} 
  13. //設(shè)置半徑值 
  14. void Circle::setRadius(float r){radius=r;} 
  15. //讀取半徑值 
  16. float Circle::getRadius( )const {return radius;} 
  17. //計算圓面積 
  18. float Circle::area( )const 
  19. return 3.14159*radius*radius; 
  20. //重載運算符“<<”,使之按規(guī)定的形式輸出圓的信息 
  21. ostream &operator <<(ostream &output,const Circle &c) 
  22. output<<"Center=["<<c.x<<","<<c.y<<"],r="<<c.radius<<",area="<<c.area( )<<endl; 
  23. return output; 

為了測試以上Circle類的定義,可以寫出下面的主函數(shù):

 

 
  1. int main( ) 
  2. Circle c(3.5,6.4,5.2); //建立Circle類對象c,并給定圓心坐標(biāo)和半徑 
  3. cout<<"original circle://nx="<<c.getX()<<", y="<<c.getY()<<", r="<<c.getRadius( )<<", area="<<c.area( )<<endl; //輸出圓心坐標(biāo)、半徑和面積 
  4. c.setRadius(7.5); //設(shè)置半徑值 
  5. c.setPoint(5,5); //設(shè)置圓心坐標(biāo)值x,y 
  6. cout<<"new circle://n"<<c; //用重載運算符“<<”輸出圓對象的信息 
  7. Point &pRef=c; //pRef是Point類的引用變量,被c初始化 
  8. cout<<"pRef:"<<pRef; //輸出pRef的信息 
  9. return 0; 

程序編譯通過,運行結(jié)果為:

 

 
  1. original circle:(輸出原來的圓的數(shù)據(jù)) 
  2. x=3.5, y=6.4, r=5.2, area=84.9486 
  3. new circle:(輸出修改后的圓的數(shù)據(jù)) 
  4. Center=[5,5], r=7.5, area=176.714 
  5. pRef:[5,5] (輸出圓的圓心“點”的數(shù)據(jù)) 

可以看到,在Point類中聲明了一次運算符“ <<”重載函數(shù),在Circle類中又聲明了一次運算符“ <<”,兩次重載的運算符“<<”內(nèi)容是不同的,在編譯時編譯系統(tǒng)會根據(jù)輸出項的類型確定調(diào)用哪一個運算符重載函數(shù)。main函數(shù)第7行用“cout<< ”輸出c,調(diào)用的是在Circle類中聲明的運算符重載函數(shù)。

請注意main函數(shù)第8行:

 

 
  1. Point & pRef = c; 

定義了 Point類的引用變量pRef,并用派生類Circle對象c對其初始化。前面我們已經(jīng)講過,派生類對象可以替代基類對象為基類對象的引用初始化或賦值(詳情請查看:C++基類與派生類的轉(zhuǎn)換)?,F(xiàn)在 Circle是Point的公用派生類,因此,pRef不能認為是c的別名,它得到了c的起始地址, 它只是c中基類部分的別名,與c中基類部分共享同一段存儲單元。所以用“cout<

3) 聲明Circle的派生類Cylinder

前面已從基類Point派生出Circle類,現(xiàn)在再從Circle派生出Cylinder類。

 

 
  1. class Cylinder:public Circle// Cylinder是Circle的公用派生類 
  2. public
  3. Cylinder (float x=0,float y=0,float r=0,float h=0); //構(gòu)造函數(shù) 
  4. void setHeight(float ); //設(shè)置圓柱高 
  5. float getHeight( )const//讀取圓柱高 
  6. loat area( )const//計算圓表面積 
  7. float volume( )const//計算圓柱體積 
  8. friend ostream& operator <<(ostream&,const Cylinder&); //重載運算符<< 
  9. protected
  10. float height;//圓柱高 
  11. }; 
  12. //定義構(gòu)造函數(shù) 
  13. Cylinder::Cylinder(float a,float b,float r,float h):Circle(a,b,r),height(h){} 
  14. //設(shè)置圓柱高 
  15. void Cylinder::setHeight(float h){height=h;} 
  16. //讀取圓柱高 
  17. float Cylinder::getHeight( )const {return height;} 
  18. //計算圓表面積 
  19. float Cylinder::area( )const { return 2*Circle::area( )+2*3.14159*radius*height;} 
  20. //計算圓柱體積 
  21. float Cylinder::volume()const {return Circle::area()*height;} 
  22. ostream &operator <<(ostream &output,const Cylinder& cy) 
  23. output<<"Center=["<<cy.x<<","<<cy.y<<"],r="<<cy.radius<<",h="<<cy.height <<"//narea="<<cy.area( )<<", volume="<<cy.volume( )<<endl; 
  24. return output; 
  25. //重載運算符“<<” 

可以寫出下面的主函數(shù):

 

 
  1. int main( ) 
  2. Cylinder cy1(3.5,6.4,5.2,10);//定義Cylinder類對象cy1 
  3. cout<<"//noriginal cylinder://nx="<<cy1.getX( )<<", y="<<cy1.getY( )<<", r=" 
  4. <<cy1.getRadius( )<<", h="<<cy1.getHeight( )<<"//narea="<<cy1.area() 
  5. <<",volume="<<cy1.volume()<<endl;//用系統(tǒng)定義的運算符“<<”輸出cy1的數(shù)據(jù) 
  6. cy1.setHeight(15);//設(shè)置圓柱高 
  7. cy1.setRadius(7.5);//設(shè)置圓半徑 
  8. cy1.setPoint(5,5);//設(shè)置圓心坐標(biāo)值x,y 
  9. cout<<"//nnew cylinder://n"<<cy1;//用重載運算符“<<”輸出cy1的數(shù)據(jù) 
  10. Point &pRef=cy1;//pRef是Point類對象的引用變量 
  11. cout<<"//npRef as a Point:"<<pRef;//pRef作為一個“點”輸出 
  12. Circle &cRef=cy1;//cRef是Circle類對象的引用變量 
  13. cout<<"//ncRef as a Circle:"<<cRef;//cRef作為一個“圓”輸出 
  14. return 0; 

運行結(jié)果如下:

 

 
  1. original cylinder:(輸出cy1的初始值) 
  2. x=3.5, y=6.4, r=5.2, h=10 (圓心坐標(biāo)x,y。半徑r,高h) 
  3. area=496.623, volume=849.486 (圓柱表面積area和體積volume) 
  4. new cylinder: (輸出cy1的新值) 
  5. Center=[5,5], r=7.5, h=15 (以[5,5]形式輸出圓心坐標(biāo)) 
  6. area=1060.29, volume=2650.72(圓柱表面積area和體積volume) 
  7. pRef as a Point:[5,5] (pRef作為一個“點”輸出) 
  8. cRef as a Circle:Center=[5,5], r=7.5, area=176.714(cRef作為一個“圓”輸出) 

說明:在Cylinder類中定義了 area函數(shù),它與Circle類中的area函數(shù)同名,根據(jù)前面我們講解的同名覆蓋的原則(詳情請查看:C++多重繼承的二義性問題),cy1.area( ) 調(diào)用的是Cylinder類的area函數(shù)(求圓柱表面積),而不是Circle類的area函數(shù)(圓面積)。請注意,這兩個area函數(shù)不是重載函數(shù),它們不僅函數(shù)名相同,而且函數(shù)類型和參數(shù)個數(shù)都相同,兩個同名函數(shù)不在同 —個類中,而是分別在基類和派生類中,屬于同名覆蓋。重載函數(shù)的參數(shù)個數(shù)和參數(shù)類型必須至少有一者不同,否則系統(tǒng)無法確定調(diào)用哪一個函數(shù)。

main函數(shù)第9行用“cout<

main函數(shù)中最后4行的含義與在定義Circle類時的情況類似。pRef是Point類的引用變量,用cy1對其初始化,但它不是cy1的別名,只是cy1中基類Point部分的別名,在輸出pRef時是作為一個Point類對象輸出的,也就是說,它是一個“點”。同樣,cRef是Circle類的引用變量,用cy1對其初始化,但它只是cy1中的直接基類Circle部分的別名, 在輸出 cRef 時是作為Circle類對象輸出的,它是一個"圓”,而不是一個“圓柱體”。從輸 出的結(jié)果可以看出調(diào)用的是哪個運算符函數(shù)。

在本例中存在靜態(tài)多態(tài)性,這是運算符重載引起的(注意3個運算符函數(shù)是重載而不是同名覆蓋,因為有一個形參類型不同)。可以看到,在編譯時編譯系統(tǒng)即可以判定應(yīng)調(diào)用哪個重載運算符函數(shù)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
免费在线黄网| 销魂美女一区二区| 亚洲狠狠丁香婷婷综合久久久| 日韩1区2区3区| 亚洲在线视频网站| 在线一区免费观看| 日韩久久精品一区二区三区| 国产电影一区二区在线观看| 中文在线免费观看| 图片区日韩欧美亚洲| 亚洲午夜成aⅴ人片| 亚洲国产高清在线| 久久精品视频在线观看免费| 欧美一二三四五区| 国产一区二区三区免费不卡| 男女猛烈激情xx00免费视频| 丝袜美腿小色网| 中文在线官网天堂| 91久久久久久久一区二区| 97人人模人人爽视频一区二区| 日本一区二区三区在线观看视频| 91精品视频免费| 久久精品综合视频| 99v久久综合狠狠综合久久| 狼人综合视频| 久久超碰亚洲| bl在线肉h视频大尺度| 欧美xxxx性xxxxx高清视频| 99热国内精品永久免费观看| 亚洲国产一区视频| 91精品国产高清| 久久中文字幕av| 中文字幕精品在线播放| 国产主播精品| 欧美日韩色婷婷| 国产99亚洲| 午夜久久免费观看| 国产精品高潮久久| 娇妻高潮浓精白浆xxⅹ| 成人软件在线观看| 好吊妞www.84com只有这里才有精品| 欧美a在线播放| 欧美国产日韩在线观看成人| 在线看福利67194| 国产极品模特精品一二| 亚洲综合久久久| 国产成人精品日本亚洲专区61| 国产一卡二卡3卡4卡四卡在线| 极品美女销魂一区二区三区| 日韩一二三区不卡在线视频| 国产喷白浆一区二区三区| 国产区视频在线观看| 久久精品一区二区三区不卡牛牛| 在线观看91视频| 三级国产在线观看| 亚洲аv电影天堂网| 欧美一级一级性生活免费录像| 国产一二三视频| 亚洲同志网站入口| 午夜欧洲一区| 刘亦菲久久免费一区二区| 亚洲欧美日韩国产综合精品二区| 日韩成人在线视频网站| www.天天操.com| 日本女优在线视频一区二区| 亚洲午夜女主播在线直播| 蜜乳av另类精品一区二区| 午夜视频久久久| 成人自拍视频网| 大肉大捧一进一出好爽| 国产精品久久久久久av福利| 亚洲精品自拍| 国产精品v欧美精品v日韩精品| 欧美激情一区二区三区不卡| 青青草视频成人| 亚洲国产成人va在线观看麻豆| 国产精品白嫩美女在线观看| 国产在线国偷精品产拍免费yy| 国产成人免费视频一区| 一区二区三区四区国产| av免费在线观| 国产精品久久久国产盗摄| 日韩亚洲电影在线| 亚洲免费999| 亚洲精品一区二区三区中文字幕| 亚洲a一级视频| 欧美成人一区二区三区高清| 亚洲男女自偷自拍| 国产毛片视频| 亚洲精品乱码久久久久久蜜桃欧美| 自拍一级黄色片| 超碰在线中文| 欧美一区二区三区免费| 日本爱爱免费视频| 伊人色综合久久久天天蜜桃| 一区二区不卡在线| 人妻少妇精品无码专区| 国产精品视频首页| 黄页网址大全在线观看| 国产精品久久久久久久第一福利| 午夜男人视频在线观看| 成人看的羞羞网站| 老司机av网站| 免费成人深夜夜行p站| 青春草在线观看视频| 一夜七次郎国产精品亚洲| jizz在线观看视频| 亚洲日本一区二区三区在线| 蜜臀精品一区二区三区在线观看| 欧美国产丝袜视频| 日韩区在线观看| 99在线|亚洲一区二区| 666欧美在线视频| 日韩黄色网址| 国产一区视频在线看| 成人激情av网| 91免费版网站入口| 在线精品视频免费播放| 野外性xxxxfreexxxxx欧美| 国内精品久久久久久影院老狼| 久久精品免费在线| 国产欧美日韩专区发布| 欧美一级bbbbb性bbbb喷潮片| 国产精品久久久久av电视剧| 欧洲一区二区三区在线| 精品日韩欧美一区二区| www.com国产| 亚洲成色最大综合在线| 久久久www成人免费精品张筱雨| 久久久久久久香蕉网| 精品久久99| 国产美女特级嫩嫩嫩bbb片| 视频福利在线| 国产特级嫩嫩嫩bbb| 国产亚洲依依| 99电影网电视剧在线观看| av中文在线资源| 久色乳综合思思在线视频| 牛牛影视一区二区三区免费看| 国产成人免费观看视频| 91国偷自产一区二区三区的观看方式| 亚洲国产经典视频| 亚洲综合视频在线观看| 久久亚洲无码视频| 国产高清一区二区三区| 久久久免费高清视频| 亚洲第一论坛sis| 亚洲精品久久7777| 国产伦精品一区二区三区精品| 久99久在线| 欧洲永久精品大片ww免费漫画| 亚洲免费在线看| 亚洲成av人电影| 麻豆电影在线| gratisvideos另类灌满| 精品国产av色一区二区深夜久久| 在线国产99| 精品999在线播放| 国产精品影视在线| 欧美性性性性性ⅹxxbbbb| 欧美一区二区三区成人精品| 欧美xxxxbbbb在线播放| 第一区第二区在线| 国产激情小视频在线| 日韩久久一级片| 成人三级视频| 国产亚洲精品美女久久久久久久久久| 波多野结衣亚洲一区| 国产成人精品自拍| 欧美一区二区三区精美影视| eeuss影院在线观看第一页| 高清不卡av| 国产1卡2卡三卡四卡网站| 天堂蜜桃一区二区三区| 国产亚洲一区二区三区在线观看| 久久久久亚洲av无码专区体验| 久久发布国产伦子伦精品| 日本免费不卡视频| 国产精品日日摸夜夜添夜夜av| 中文字幕一区二区在线观看视频| 国产精品极品尤物在线观看| 亚洲高清不卡一区| 亚洲丁香久久久| 国产精品综合视频| 国产精品久久观看| 2018天天操夜夜操| 欧美日韩在线资源| 91在线视频免费看| 男人天堂综合网| 久色成人在线| 高清视频一区二区三区| 国产亚洲网站| 日韩人妻精品中文字幕| 国模私拍一区二区三区| 中文字幕亚洲综合久久五月天色无吗''| 青青草国产精品亚洲专区无| 欧美videosex性欧美黑吊| 亚洲伦理久久| 欧美在线视频在线播放完整版免费观看| 日韩久久精品一区| 日本中文字幕一区二区| 国产一区二区三区在线观看精品| 欧美日韩视频不卡| 国精品**一区二区三区在线蜜桃| 青青草手机在线| 福利在线一区二区| 亚洲欧洲日产国产综合网| 91麻豆产精品久久久久久夏晴子| 国产精品亚洲无码| 最新热久久免费视频| 欧美精品国产| 成人永久免费视频| 久久成人国产| 四季av一区二区| 国产盗摄女厕一区二区三区| 曰本三级在线| 俄罗斯av网站| 拍真实国产伦偷精品| 亚洲国产精品成人久久蜜臀| 亚洲天堂网在线观看| 欧美人与性动交α欧美精品图片| 久久免费视频66| 成人av网站大全| 国产免费一区视频观看免费| 国产一区美女| www.毛片.com| 色网在线播放| 亚洲激情播播| 国产视频一区二区三区在线观看| 一区二区不卡在线视频 午夜欧美不卡在| 韩国av在线播放| 亚洲小说欧美激情另类| 国产在线观看91一区二区三区| 手机看片久久久| 91爱爱小视频k| 成人亚洲国产| 亚洲国产精品视频一区| 亚洲综合精品四区| 欧美三级日本三级少妇99| 在线观看视频污| 综合免费一区二区三区| 国产高清日韩| 日韩精品卡通动漫网站| 欧美一区二区三区免费在线看| 91麻豆精品国产自产在线观看一区| 国产二区一区| 狠狠干 狠狠操| 国产在线精品一区二区三区》| 97精品国产97久久久久久春色| 极品尤物av丝袜美腿在线观看| 欧美国产一区视频在线观看| 国产伦理在线观看| 潘金莲一级淫片aaaaa免费看| 99久久这里只有精品| 九色精品视频在线观看| 久久久噜噜噜久久人人看| 欧洲精品一区二区| 麻豆视频观看网址久久| 日韩在线第一区| av福利精品| 亚洲欧美激情一区二区三区| 天天摸天天操天天爽| 久久99蜜桃精品久久久久小说| 成 人 黄 色 片 在线播放| 麻豆明星ai换脸视频| 大乳护士喂奶hd| 亚洲欧洲日产国码av系列天堂| 精品毛片三在线观看| 性欧美亚洲xxxx乳在线观看| 夜夜嗨av色一区二区不卡| 欧美精品久久| 在线观看h网| 永久久久久久久| 成人免费观看49www在线观看| 国产极品在线播放| 日本一区二区三区四区视频| 精品国产乱码久久久久久闺蜜| 91农村精品一区二区在线| 激情内射人妻1区2区3区| 色婷婷一区二区三区av免费看| 国产成人精品一区二区在线小狼| 手机av在线免费观看| 在线黄色av网站| 亚洲午夜成aⅴ人片| 欧美性猛交xxxxx免费看| 成人网免费视频| 中文av一区二区三区| 久久亚洲黄色| 免费在线观看国产黄| 美女国产一区二区| 日韩一级免费视频| brazzers欧美最新版视频| 欧美精品一二三区| 激情欧美一区二区| 秋霞午夜剧场| 2019日本中文字幕| 欧美午夜精品久久久久久孕妇| 香蕉视频成人在线观看| 亚洲高清视频一区| 三级在线播放| 亚洲一区日韩在线| 伦理片一区二区三区| 999福利在线视频| 日韩理论视频| av资源久久| 在线免费观看av的网站| 四虎影院成人| 96精品久久久久中文字幕| 在线观看视频一区二区三区| 国产精品亚洲四区在线观看| 欧美88av| 高清wwwwxxxx| 亚洲av永久无码精品| 久草这里只有精品视频| 国产精品乱码一区二区| 亚洲精品不卡在线| 日韩精品欧美大片| 日韩欧美一区二区三区久久| 日韩一区在线播放| 日韩综合网站| 亚洲国产精品成人综合| 国产在线拍揄自揄拍视频| 凹凸日日摸日日碰夜夜| 久久久国产精品成人免费| 91亚洲精华国产精华精华液| 精品久久久久久久久久久院品网| 国产永久免费高清在线观看| 免费黄在线观看|