精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

c++編譯器對多態(tài)的實現(xiàn)原理總結

開發(fā) 后端
問題:定義一個空的類型,里面沒有任何的成員變量或者成員函數(shù),對這個類型進行 sizeof 運算,結果是?

問題:定義一個空的類型,里面沒有任何的成員變量或者成員函數(shù),對這個類型進行 sizeof 運算,結果是?

結果是1,因為空類型的實例不包含任何信息,按道理 sizeof 計算之后結果是0,但是在聲明任何類型的實例的時候,必須在內存占有一定的空間,否則無法使用這些實例,至于占據(jù)多少內存大小,由編譯器決定。

繼續(xù)問:如果在這個類型里添加一個構造函數(shù)和析構函數(shù),那么結果又是多少?

還是1,因為我們調用構造函數(shù)和析構函數(shù),只需要知道函數(shù)的地址即可,而這些函數(shù)的地址只和類型相關,和類型的實例無關,編譯器不會為這兩個函數(shù)在實例內添加任何額外的信息。

繼續(xù)問:如果把析構函數(shù)變?yōu)樘摵瘮?shù)呢?結果是多少?

c++編譯器發(fā)現(xiàn)了類型里有虛函數(shù),,就會為這個類型生成一個虛函數(shù)表,并在該類型的每一個實例中添加一個指向虛函數(shù)表的指針,在32位機器,指針類型大小是4字節(jié),結果是4,64位機器中,指針大小是8字節(jié),結果是8。

面向對象的多態(tài)的實現(xiàn)效果

多態(tài):同樣的調用語句有多種不同的表現(xiàn)形態(tài)

看下面的例子:

  1. class animal 
  2. public
  3.     void sleep() 
  4.     { 
  5.         cout<<"animal sleep"<<endl; 
  6.     } 
  7.  
  8.     void breathe() 
  9.     { 
  10.         cout<<"animal breathe"<<endl; 
  11.     } 
  12. }; 
  13.  
  14. class fish:public animal 
  15. public
  16.     void breathe() 
  17.     { 
  18.         cout<<"fish bubble"<<endl; 
  19.     } 
  20. }; 
  21.  
  22. int main(void
  23.     fish fh; 
  24.     animal *pAn=&fh; 
  25.     pAn->breathe(); 
  26.     return 0
  27. }     

父類指針指向了子類對象,調用了 breathe 方法,那么結果是animal breathe,也就是說調用的是父類的breathe方法。 這沒有實現(xiàn)多態(tài)性。因為C++編譯器在編譯的時候,要確定每個對象調用的函數(shù)的地址,這稱為早期綁定(early binding),當fish類的對象fh的地址賦給父類的pAn指針時,C++編譯器進行了類型轉換,它認為父類的指針變量pAn保存的就是animal對象的地址。當在main函數(shù)中執(zhí)行pAn->breathe時,調用的就是animal對象的breathe函數(shù)。

#p#

進一步說:

 

c++編譯器對多態(tài)的實現(xiàn)原理總結

 

在我們構造fish類的對象時,首先要調用父類:animal類的構造函數(shù)去構造animal類的對象,然后才調用fish類的構造函數(shù)完成自身部分的構造,從而拼接出一個完整的fish對象。當將fish類的對象轉換為animal類型時,該對象就被認為是原對象整個內存模型的上半部分,也就是圖中的“animal的對象所占內存”。

那么當利用類型轉換后的對象指針去調用它的方法時,當然也就是調用它所在的內存中的方法。因此,輸出animal breathe。這不是多態(tài)的表現(xiàn)形式。

多態(tài)實現(xiàn)的三個條件

必要的前提是必須有繼承關系、然后我們需要父類指針(引用)去調用子類的對象,且關鍵是:子類有對父類的虛函數(shù)的重寫。virtual關鍵字,告訴編譯器這個函數(shù)要支持多態(tài),我們不要根據(jù)指針類型判斷如何調用方法,而是要根據(jù)指針所指向的實際對象類型來判斷如何調用。

多態(tài)的理論基礎

前面的例子,輸出的結果是因為編譯器在編譯的時候,就已經(jīng)確定了對象調用的函數(shù)的地址,要解決這個問題就要使用遲綁定(late binding)技術。當編譯器使用遲綁定時,就會在運行時再去確定對象的類型以及正確的調用函數(shù)。而要讓編譯器采用遲綁定,就要在基類中聲明函數(shù)時使用virtual關鍵字,這樣的函數(shù)我們稱為虛函數(shù)。一旦某個函數(shù)在基類中聲明為virtual,那么在所有的派生類中該函數(shù)都是virtual,而不需要再顯式地聲明為virtual。

所謂的動態(tài)聯(lián)編:根據(jù)實際的對象類型來判斷重寫函數(shù)的調用。

C++中多態(tài)的實現(xiàn)原理

當類中聲明虛函數(shù)時,編譯器會在類中生成一個虛函數(shù)表,虛函數(shù)表是一個存儲類成員函數(shù)指針的數(shù)據(jù)結構,虛函數(shù)表是由編譯器自動生成與維護的,virtual成員函數(shù)會被編譯器放入虛函數(shù)表中,存在虛函數(shù)時,每個對象中都有一個指向虛函數(shù)表的指針(vptr指針)

 

c++編譯器對多態(tài)的實現(xiàn)原理總結

 

如圖,編譯器為每個類的對象提供一個虛表指針vptr,這個指針指向對象所屬類的虛函數(shù)表。在程序運行時,根據(jù)對象的類型去初始化vptr,從而讓vptr正確的指向所屬類的虛表,從而在調用虛函數(shù)時,就能夠找到正確的函數(shù)。

 

c++編譯器對多態(tài)的實現(xiàn)原理總結

 

fish fh; animal*pAn=&fh; pAn->breathe;

由于父類的指針pAn實際指向的對象類型是子類的對象,因此vptr指向的子類fish 類的vtable,當調用pAn->breathe時,根據(jù)虛表中的函數(shù)地址找到的就是fish類的breathe函數(shù)。正是由于每個對象調用的虛函數(shù)都是通過虛表指針來索引的,也就決定了虛表指針的正確初始化是非常重要的。換句話說,在虛表指針沒有正確初始化之前,我們不能夠去調用虛函數(shù)。

#p#

那么虛表指針在什么時候,或者說在什么地方初始化呢?

c++是在構造函數(shù)中進行虛表的創(chuàng)建和虛表指針的初始化。

構造函數(shù)的調用順序:在構造子類對象時,要先調用父類的構造函數(shù),此時編譯器只“看到了”父類,并不知道后面是否后還有繼承者,它初始化父類對象的虛表指針vptr,該虛表指針指向父類的虛表。當執(zhí)行子類的構造函數(shù)時,子類對象的虛表指針vptr被初始化, 此時 vptr指向自身的虛表。當fish類的fh對象構造完畢后,其內部的虛表指針也就被初始化為指向fish類的虛表。

在類型轉換后,調用pAn->breathe,由于pAn實際指向的是fish類的對象,該對象內部的虛表指針指向的是fish類的虛表,因此最終調用的是fish類的breathe函數(shù)。

 

c++編譯器對多態(tài)的實現(xiàn)原理總結

 

說明:

通過虛函數(shù)表指針VPTR調用重寫函數(shù)是在程序運行時進行的,因此需要通過尋址操作才能確定真正應該調用的函數(shù)。而普通成員函數(shù)是在編譯時就確定了調用的函數(shù)。在效率上,虛函數(shù)的效率要低很多。出于效率考慮,沒有必要將所有成員函數(shù)都聲明為虛函數(shù)

對象在創(chuàng)建的時,由編譯器對VPTR指針進行初始化,只有當對象的構造完全結束后VPTR的指向才最終確定,到底是父類對象的VPTR指向父類虛函數(shù)表還是子類對象的VPTR指向子類虛函數(shù)表。

回到開始的問題:

 

  1. class A 
  2.     void g(){.....} 
  3. }; 
  4. 則sizeof(A)=1;如果改為如下: 
  5. class A 
  6. public
  7.     virtual void f() 
  8.     { 
  9.        ...... 
  10.     } 
  11.     void g(){.....} 

則 sizeof(A)=4,這是因為在類A中存在virtual function,為了實現(xiàn)多態(tài),每個含有virtual function的類中都隱式包含著一個靜態(tài)虛指針vptr指向該類的靜態(tài)虛表vtable, vtable中的表項指向類中的每個virtual function的入口地址。

多態(tài)是在程序進行動態(tài)綁定得以實現(xiàn)的,而不是編譯時就確定對象的調用方法的靜態(tài)綁定。

程序運行到動態(tài)綁定時,通過基類的指針所指向的對象類型,通過vptr找到其所指向的vtable,然后調用其相應的方法,即可實現(xiàn)多態(tài)。這就是動態(tài)綁定(dynamic binding)或者叫做遲后聯(lián)編(lazy compile)。

 

  1. class base; 
  2.  
  3. base *pbase; 
  4.  
  5. class base 
  6. public
  7.     base() 
  8.     { 
  9.         pbase=this
  10.     } 
  11.  
  12.     virtual void fn() 
  13.     { 
  14.         cout<<"base"<<endl; 
  15.     } 
  16. }; 
  17.  
  18. class derived:public base 
  19.     void fn() 
  20.     { 
  21.         cout<<"derived"<<endl; 
  22.     } 
  23. }; 
  24.  
  25. derived aa; 
  26.  
  27. int main(void
  28.     pbase->fn(); 
  29.     return 0; 

在base類的構造函數(shù)中將this指針保存到pbase全局變量中。在定義全局對象aa,即調用derived aa;時,要調用基類的構造函數(shù),先構造基類的部分,然后是子類的部分,由這兩部分拼接出完整的對象aa。

這個this指針指向的當然也就是aa對象,那么我們在main函數(shù)中利用pbase調用fn,因為pbase實際指向的是aa對象,而aa對象內部的虛表指針指向的是自身的虛表,最終調用的當然是derived類中的fn函數(shù)。

在derived類中聲明fn函數(shù)時,忘了加public關鍵字,導致聲明為了private(默認為private),但通過前面我們所講述的虛函數(shù)調用機制,也就明白了這個地方并不影響它輸出正確的結果。不知道這算不算C++的一個Bug,因為虛函數(shù)的調用是在運行時確定調用哪一個函數(shù),所以編譯器在編譯時,并不知道pbase指向的是aa對象,所以導致這個奇怪現(xiàn)象的發(fā)生。如果直接用aa對象去調用,由于對象類型是確定的(注意aa是對象變量,不是指針變量),編譯器往往會采用早期綁定,在編譯時確定調用的函數(shù),于是就會發(fā)現(xiàn)fn是私有的,不能直接調用。

#p#

如果直接在基類的構造函數(shù)中調用虛函數(shù),會怎樣?

在調用基類的構造函數(shù)時,編譯器只“看到了”父類,并不知道后面是否后還有繼承者,它只是初始化父類對象的虛表指針,讓該虛表指針指向父類的虛表,所以看到結果當然不正確。只有在子類的構造函數(shù)調用完畢后,整個虛表才構建完畢,此時才能真正應用C++的多態(tài)性。換句話說,不要在構造函數(shù)中去調用虛函數(shù)實現(xiàn)多態(tài),當然如果只是想調用本類的函數(shù),也無所謂。

得到一個結論:

虛函數(shù)和純虛函數(shù)比較

虛函數(shù)

引入原因:為了方便使用多態(tài)特性,我們常常需要在基類中定義虛函數(shù)。

純虛函數(shù)

引入原因:為了實現(xiàn)多態(tài)性,純虛函數(shù)有點像java中的接口,自己不去實現(xiàn)過程,讓繼承他的子類去實現(xiàn)。在很多情況下,基類本身生成對象是不合情理的。例如,動物作為一個基類可以派生出老虎、孔雀等子類,但動物本身生成對象明顯不合常理。 這時我們就將動物類定義成抽象類,也就是包含純虛函數(shù)的類,純虛函數(shù)就是基類只定義了函數(shù)體,沒有實現(xiàn)過程:

 

  1. virtual void Eat() = 0; 直接=0 不要 在cpp中定義就可以了  

虛函數(shù)和純虛函數(shù)的區(qū)別

虛函數(shù)中的函數(shù)是實現(xiàn)的哪怕是空實現(xiàn),它的作用是這個函數(shù)在子類里面可以被重載,運行時動態(tài)綁定實現(xiàn)動態(tài),而純虛函數(shù)是個接口,是個函數(shù)聲明,在基類中不實現(xiàn),要等到子類中去實現(xiàn)

虛函數(shù)在子類里可以不重載,但是虛函數(shù)必須在子類里去實現(xiàn)。

總結:

對于虛函數(shù)調用來,每一個對象內部都有一個虛表指針,該虛表指針被初始化為本類的虛表。所以在程序中,不管你的對象類型如何轉換,但該對象內部的虛表指針是固定的,所以才能實現(xiàn)動態(tài)的對象函數(shù)調用,這就是C++多態(tài)性實現(xiàn)的原理。

如果基類有虛函數(shù):

1、每一個類都有虛表。

2、虛表可以繼承,如果子類沒有重寫虛函數(shù),那么子類虛表中仍然會有該函數(shù)的地址,只不過這個地址指向的是基類的虛函數(shù)實現(xiàn)。如果基類3個虛函數(shù),那么基類的虛表中就有三項(虛函數(shù)地址),派生類也會有虛表,至少有三項,如果重寫了相應的虛函數(shù),那么虛表中的地址就會改變,指向自身的虛函數(shù)實現(xiàn)。如果派生類有自己的虛函數(shù),那么虛表中就會添加該項。

3、派生類的虛表中虛函數(shù)地址的排列順序和基類的虛表中虛函數(shù)地址排列順序相同。

責任編輯:王雪燕 來源: dashuai的博客
相關推薦

2010-02-03 13:14:03

C++編譯器命令

2010-01-21 09:26:53

CC++編譯器

2013-03-18 09:42:47

C++C++ 11

2010-01-15 16:37:28

Visual C++

2010-01-27 16:39:48

C++編譯器

2010-10-20 13:43:37

C++編譯器

2010-01-18 10:34:21

C++編譯器

2010-01-21 09:11:38

C++編譯器

2010-01-13 14:35:10

Visual C++

2010-01-18 10:28:15

C++編譯器

2010-01-12 16:42:59

C++編譯器

2010-01-22 18:33:17

C++編譯器

2010-01-14 15:29:44

C++編譯器

2010-01-13 13:42:55

C++編譯器

2010-01-27 14:48:55

優(yōu)秀C++編譯器

2010-01-08 16:00:46

C++編譯器

2010-01-12 17:26:37

C++編譯器

2009-01-12 10:16:11

Visual C++編譯器選項設置

2010-01-14 14:55:14

C++編譯器

2010-01-22 16:55:52

C++編譯器
點贊
收藏

51CTO技術棧公眾號

波多野结衣在线观看一区二区三区 | 日韩一级理论片| 天堂a中文在线| 欧美特黄aaaaaaaa大片| 久久精品视频免费| 国产www精品| 在线观看日韩一区| 国产精品人成电影| 亚洲色图综合区| 精品精品国产三级a∨在线| 欧美午夜精品伦理| 美国av在线播放| 五月天婷婷激情网| 精品一区二区三区免费观看| 久久久久久久久久久国产| 蜜桃av免费看| 99综合久久| 精品免费在线视频| 亚洲最新免费视频| 天堂а√在线8种子蜜桃视频 | 国产精品久久国产精麻豆99网站| 亚洲一区二区三区成人在线视频精品| 日韩av在线播| 婷婷亚洲最大| 亚洲欧洲激情在线| 久草免费资源站| 欧美视频免费看| 欧美性高潮在线| 波多野结衣av一区二区全免费观看| 免费在线黄色网址| 成人网在线播放| 91精品视频一区| 波多野结衣一本一道| 在线成人欧美| 欧美大片在线影院| 手机在线中文字幕| 日韩精品水蜜桃| 亚洲欧美日韩另类| 色综合久久五月| 日韩中文字幕一区二区高清99| 欧美视频一区二区| 久草资源站在线观看| 国产精品69xx| 亚洲一级二级在线| 免费极品av一视觉盛宴| 麻豆网站在线看| 久久精品这里都是精品| 久久国产精品一区二区三区四区 | 一区二区精品国产| 国产私拍精品| 国产丝袜在线精品| 欧美视频1区| 黄色片在线免费看| 国产午夜精品久久久久久免费视| 九色91在线视频| 日韩一级片免费在线观看| 国产a视频精品免费观看| 91亚洲精品一区二区| 国产精品系列视频| 国产一区二区中文字幕| 91手机视频在线观看| 国产伦精品一区二区三区免.费| 美女免费视频一区二区| 国产精品自产拍高潮在线观看| 日本熟妇一区二区三区| 日本免费在线视频不卡一不卡二| 国产成人精品综合| 色婷婷久久综合中文久久蜜桃av| 免费不卡在线观看| 国产精品一区电影| 国产精品久久久久久久久毛片 | 午夜在线观看一区| 欧美精品一区二区三区精品| 尤物九九久久国产精品的特点 | 日韩av电影中文字幕| 精品黑人一区二区三区| 卡一卡二国产精品| 亚洲一区二区三区sesese| 亚洲va欧美va| 91原创在线视频| 日本不卡二区| 欧美极品另类| 快播电影网址老女人久久| 天堂成人免费av电影一区| 国产999精品久久久| 涩涩视频在线观看| 国产一区在线不卡| 国产一区再线| 二区在线视频| 亚洲精品中文字幕乱码三区 | 亚洲免费精品| 国产精品欧美亚洲777777| 国产精品怡红院| 成人小视频免费观看| 久久综合给合久久狠狠色| 97在线观看免费观看高清 | 91影院在线观看| 性欧美.com| heyzo在线欧美播放| 欧美怡红院视频| 人妻av一区二区三区| 最新精品国偷自产在线| 久久精品99国产精品酒店日本| 亚洲av无码一区二区三区在线| 亚洲综合在线电影| 久久精品高清| 欧美丰满老妇厨房牲生活| 国产亚洲欧美在线精品| 黄色小说综合网站| 欧美日韩中文国产一区发布 | 国产女主播视频一区二区| 青青草原网站在线观看| 一个人www视频在线免费观看| 欧美日产国产精品| xxxwww国产| **女人18毛片一区二区| 日韩男女性生活视频| 国产99久久九九精品无码免费| 久久久777精品电影网影网 | 91在线三级| 欧美剧情片在线观看| 国产精品揄拍100视频| 欧美 日韩 国产一区二区在线视频| 91sao在线观看国产| 国产福利免费视频| 国产精品久久影院| 免费看黄色一级大片| 里番精品3d一二三区| 免费91麻豆精品国产自产在线观看 | 亚洲破处大片| 91精品久久久久久久| 黄色在线观看网| 五月天一区二区| 亚洲少妇中文字幕| 综合视频在线| 国产在线观看不卡| 在线观看a视频| 欧美在线视频不卡| 国产中年熟女高潮大集合| 9色国产精品| 国产精品一区二区欧美| 在线观看男女av免费网址| 5858s免费视频成人| 国产在线观看免费视频软件| 日本不卡高清视频| 日韩欧美精品在线不卡| 一二三四视频在线中文| 日韩av在线一区二区| 日本少妇xxxx动漫| 99在线热播精品免费| 天堂…中文在线最新版在线| 丁香一区二区| 欧美军人男男激情gay| 亚洲人精品午夜在线观看| 日韩不卡在线播放| 2欧美一区二区三区在线观看视频| 搞av.com| 视频小说一区二区| 欧日韩不卡在线视频| 九一国产在线| 欧美最新大片在线看| 日本午夜精品视频| 久久99精品久久久久婷婷| 中文字幕av日韩精品| 精品国产鲁一鲁****| 久久最新资源网| 亚洲av综合色区无码一区爱av| 亚洲一卡二卡三卡四卡| 亚洲第一黄色网址| 久久精品官网| 亚洲国产一区二区三区在线播| 国产精品久久久久久妇女| 视频在线观看99| 99久久精品国产色欲| 亚洲午夜日本在线观看| 国产国语性生话播放| 久久天堂精品| 日本福利视频导航| av综合网页| 国产成人a亚洲精品| 日本中文字幕在线播放| 日韩视频免费观看高清完整版在线观看 | 国产精品美女久久久久久2018| 中文字幕在线视频精品| 黄色国产精品| 日韩资源av在线| 国产一区二区三区| 2020欧美日韩在线视频| 91在线视频| 精品精品国产高清一毛片一天堂| 91视频免费网址| 亚洲欧美一区二区视频| 人妻换人妻a片爽麻豆| 日韩中文字幕91| 蜜臀av性久久久久蜜臀av| 校花撩起jk露出白色内裤国产精品| 国产精品电影久久久久电影网| 亚洲www色| 亚洲视频综合网| 精品人妻一区二区三区三区四区| 欧美性xxxx极品hd满灌| 免费无码毛片一区二区app| 久久亚洲欧美国产精品乐播| 992kp免费看片| 午夜在线播放视频欧美| 日本一道在线观看| 国产一区2区| 福利视频久久| 青青伊人久久| 日韩美女免费视频| 欧美v亚洲v| 日韩午夜在线视频| 日韩有码电影| 精品久久久三级丝袜| 亚洲系列在线观看| 一本色道a无线码一区v| 欧美一级高潮片| 亚洲三级在线免费观看| 性欧美一区二区| 99re66热这里只有精品3直播 | 奇米影视亚洲色图| 婷婷亚洲五月色综合| 日日噜噜噜噜夜夜爽亚洲精品| 久久久免费毛片| 成人h视频在线观看| 亚洲热av色在线播放| 国产盗摄xxxx视频xxx69| 免费h在线看| 欧美黄色片在线观看| 国产福利视频在线| 日韩中文字幕在线观看| 欧美3p视频在线观看| 亚洲电影免费观看高清完整版在线观看 | 日韩伦理福利| 97热在线精品视频在线观看| 午夜激情在线| 欧美精品在线观看91| 黄页视频在线播放| 三级精品视频久久久久| yiren22综合网成人| 亚洲人成网在线播放| 欧美精品少妇| 亚洲性视频网址| 九色视频成人自拍| 亚洲人免费视频| 国产资源在线播放| 亚洲天堂精品在线| 国产黄色在线| 一区二区三区天堂av| 国产精品一级伦理| 在线观看国产精品91| av一本在线| 日韩在线播放一区| 国产网站在线免费观看| 久久中文久久字幕| 伊人精品影院| 欧美精品videosex牲欧美| 亚洲wwwww| 亚洲3p在线观看| 台湾佬中文娱乐久久久| 国产精品久久久久久av福利| 国产精品原创视频| 91久热免费在线视频| 日韩精品一区国产| 国产一区免费视频| 蜜桃国内精品久久久久软件9| 欧美在线视频一区二区三区| 国产一区二区三区站长工具| 亚洲最大免费| 女生裸体视频一区二区三区| 国产96在线 | 亚洲| 亚洲欧美成人| 日韩欧美国产片| 国产精品99久久久久久宅男| 一级黄色片毛片| 久久久一区二区| 中文字幕美女视频| 亚洲一二三区不卡| 亚洲av无码精品一区二区| 欧美精品久久天天躁| 亚洲精华国产精华精华液网站| 日韩av有码在线| 在线国产91| 久久久久久久久久久网站| 国产精品迅雷| 亚洲va久久久噜噜噜久久天堂| 国产乱人伦精品一区| 日本免费高清一区二区| 婷婷伊人综合| 久久精品午夜福利| 精品一区精品二区高清| 熟妇高潮一区二区| 亚洲国产精品传媒在线观看| 欧美日韩免费做爰视频| 色婷婷综合在线| 亚洲精品成av人片天堂无码| 亚洲少妇激情视频| 污污的网站在线看| 国产精品黄页免费高清在线观看| 亚洲国产高清在线观看| 日本不卡久久| 在线观看的日韩av| 爱豆国产剧免费观看大全剧苏畅| 成人免费看视频| 伊人在线视频观看| 欧美性xxxxxxxxx| 亚洲免费视频网| 日韩在线视频网| 原纱央莉成人av片| 国产精品久久久久久久小唯西川 | 亚洲色图狂野欧美| 黄色的视频在线观看| 国产精品入口尤物| 欧美日韩破处| 青草视频在线观看视频| 看国产成人h片视频| 精品人妻互换一区二区三区| 亚洲男人的天堂在线观看| 色老头在线视频| 精品香蕉一区二区三区| 成人超碰在线| 亚洲一区久久久| 99久久99久久精品国产片桃花| 99re在线视频免费观看| 99久久精品国产麻豆演员表| 欧美极品aaaaabbbbb| 5566中文字幕一区二区电影| 国产日本在线观看| 茄子视频成人在线| 任你躁在线精品免费| 美脚丝袜脚交一区二区| 国产精品99精品久久免费| 中文字幕亚洲欧美日韩| 欧美精品电影在线播放| 午夜在线小视频| 国产精品久久久久久久7电影| 伊人精品一区| 97成人在线观看视频| 91免费在线看| 日韩欧美成人一区二区三区| 亚洲国产高清自拍| 成人黄色一级大片| 国产精品jizz在线观看美国| 性chinese极品按摩| 国产欧美日韩亚州综合 | 成人黄色片视频网站| 亚洲国产一成人久久精品| www.成人黄色| 中文字幕不卡在线| 一区二区www| 久久久av一区| 九色精品蝌蚪| 欧美一二三不卡| 大陆成人av片| 国产亚洲成人av| 日韩成人在线视频网站| 欧美伦理91| 欧美视频小说| 全部av―极品视觉盛宴亚洲| 免费观看a级片| 欧美优质美女网站| 九义人在线观看完整免费版电视剧| 国产精品亚洲综合天堂夜夜| 日韩国产欧美| japan高清日本乱xxxxx| 亚洲国产成人tv| 香蕉久久一区二区三区| 国产成人在线一区| 久久五月天小说| 性鲍视频在线观看| 亚洲电影在线免费观看| 牛牛澡牛牛爽一区二区| 国产精品久久久久久久久久99| 欧美a级成人淫片免费看| 红桃视频一区二区三区免费| 亚洲一级二级三级在线免费观看| 先锋av资源站| 国产精品日韩在线播放| 欧美fxxxxxx另类| 精品国产av色一区二区深夜久久| 色综合久久中文综合久久97 | 欧美精品激情视频| 亚洲精品3区| 午夜剧场在线免费观看| 一区二区三区日韩精品| 男人的天堂av高清在线| 成人国产亚洲精品a区天堂华泰| 欧美日韩第一区| 性猛交娇小69hd| 欧美v亚洲v综合ⅴ国产v| 欲香欲色天天天综合和网| 在线观看亚洲视频啊啊啊啊| 成人在线视频首页| 这里只有精品国产| 欧美激情18p| 国产高清一区二区| 你懂得在线视频| 91精品国产色综合久久ai换脸| 欧美gv在线观看| 成人一区二区av|