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

左值引用、右值引用、移動(dòng)語義、完美轉(zhuǎn)發(fā),你知道的不知道的都在這里

開發(fā) 后端
眾所周知C++11新增了右值引用,談?dòng)抑狄梦覀円部梢詳U(kuò)展一些相關(guān)概念,程序喵下面會(huì)一一介紹。

 [[337215]]

眾所周知C++11新增了右值引用,談?dòng)抑狄梦覀円部梢詳U(kuò)展一些相關(guān)概念:

  •  左值
  •  右值
  •  純右值
  •  將亡值
  •  左值引用
  •  右值引用
  •  移動(dòng)語義
  •  完美轉(zhuǎn)發(fā)
  •  返回值優(yōu)化

程序喵下面會(huì)一一介紹:

左值、右值

概念1:

左值:可以放到等號(hào)左邊的東西叫左值。

右值:不可以放到等號(hào)左邊的東西就叫右值。

概念2:

左值:可以取地址并且有名字的東西就是左值。

右值:不能取地址的沒有名字的東西就是右值。

舉例: 

  1. int a = b + c; 

a是左值,有變量名,可以取地址,也可以放到等號(hào)左邊, 表達(dá)式b+c的返回值是右值,沒有名字且不能取地址,&(b+c)不能通過編譯,而且也不能放到等號(hào)左邊。 

  1. int a = 4; // a是左值,4作為普通字面量是右值 

左值一般有:

  •  函數(shù)名和變量名
  •  返回左值引用的函數(shù)調(diào)用
  •  前置自增自減表達(dá)式++i、--i
  •  由賦值表達(dá)式或賦值運(yùn)算符連接的表達(dá)式(a=b, a += b等)
  •  解引用表達(dá)式*p
  •  字符串字面值"abcd"

純右值、將亡值

純右值和將亡值都屬于右值。

純右值

運(yùn)算表達(dá)式產(chǎn)生的臨時(shí)變量、不和對(duì)象關(guān)聯(lián)的原始字面量、非引用返回的臨時(shí)變量、lambda表達(dá)式等都是純右值。

舉例:

  •  除字符串字面值外的字面值
  •  返回非引用類型的函數(shù)調(diào)用
  •  后置自增自減表達(dá)式i++、i--
  •  算術(shù)表達(dá)式(a+b, a*b, a&&b, a==b等)
  •  取地址表達(dá)式等(&a)

將亡值

將亡值是指C++11新增的和右值引用相關(guān)的表達(dá)式,通常指將要被移動(dòng)的對(duì)象、T&&函數(shù)的返回值、std::move函數(shù)的返回值、轉(zhuǎn)換為T&&類型轉(zhuǎn)換函數(shù)的返回值,將亡值可以理解為即將要銷毀的值,通過“盜取”其它變量?jī)?nèi)存空間方式獲取的值,在確保其它變量不再被使用或者即將被銷毀時(shí),可以避免內(nèi)存空間的釋放和分配,延長(zhǎng)變量值的生命周期,常用來完成移動(dòng)構(gòu)造或者移動(dòng)賦值的特殊任務(wù)。

舉例: 

  1. class A {  
  2.     xxx;  
  3. };  
  4. A a;  
  5. auto c = std::move(a); // c是將亡值  
  6. auto d = static_cast<A&&>(a); // d是將亡值 

左值引用、右值引用

根據(jù)名字大概就可以猜到意思,左值引用就是對(duì)左值進(jìn)行引用的類型,右值引用就是對(duì)右值進(jìn)行引用的類型,他們都是引用,都是對(duì)象的一個(gè)別名,并不擁有所綁定對(duì)象的堆存,所以都必須立即初始化。 

  1. type &name = exp; // 左值引用  
  2. type &&name = exp; // 右值引用 

左值引用

看代碼: 

  1. int a = 5 
  2. int &b = a; // b是左值引用  
  3. b = 4 
  4. int &c = 10; // error,10無法取地址,無法進(jìn)行引用  
  5. const int &d = 10; // ok,因?yàn)槭浅R茫贸A繑?shù)字,這個(gè)常量數(shù)字會(huì)存儲(chǔ)在內(nèi)存中,可以取地址 

可以得出結(jié)論:對(duì)于左值引用,等號(hào)右邊的值必須可以取地址,如果不能取地址,則會(huì)編譯失敗,或者可以使用const引用形式,但這樣就只能通過引用來讀取輸出,不能修改數(shù)組,因?yàn)槭浅A恳谩?/p>

右值引用

如果使用右值引用,那表達(dá)式等號(hào)右邊的值需要時(shí)右值,可以使用std::move函數(shù)強(qiáng)制把左值轉(zhuǎn)換為右值。 

  1. int a = 4 
  2. int &&b = a; // error, a是左值  
  3. int &&c = std::move(a); // ok 

移動(dòng)語義

談移動(dòng)語義前,我們首先需要了解深拷貝與淺拷貝的概念

深拷貝、淺拷貝

直接拿代碼舉例: 

  1. class A {  
  2. public:  
  3.     A(int size) : size_(size) {  
  4.         data_ = new int[size];  
  5.     }  
  6.     A(){}  
  7.     A(const A& a) {  
  8.         size_ = a.size_;  
  9.         data_ = a.data_;  
  10.         cout << "copy " << endl 
  11.     }  
  12.     ~A() {  
  13.         delete[] data_;  
  14.     }  
  15.     int *data_;  
  16.     int size_;  
  17. };  
  18. int main() {  
  19.     A a(10);  
  20.     A b = a 
  21.     cout << "b " << b.data_ << endl 
  22.     cout << "a " << a.data_ << endl 
  23.     return 0;  

上面代碼中,兩個(gè)輸出的是相同的地址,a和b的data_指針指向了同一塊內(nèi)存,這就是淺拷貝,只是數(shù)據(jù)的簡(jiǎn)單賦值,那再析構(gòu)時(shí)data_內(nèi)存會(huì)被釋放兩次,導(dǎo)致程序出問題,這里正常會(huì)出現(xiàn)double free導(dǎo)致程序崩潰的,但是不知道為什么我自己測(cè)試程序卻沒有崩潰,能力有限,沒搞明白,無論怎樣,這樣的程序肯定是有隱患的,如何消除這種隱患呢,可以使用如下深拷貝: 

  1. class A {  
  2. public:  
  3.     A(int size) : size_(size) {  
  4.         data_ = new int[size];  
  5.     }  
  6.     A(){}  
  7.     A(const A& a) {  
  8.         size_ = a.size_;  
  9.         data_ = new int[size_]; 
  10.         cout << "copy " << endl 
  11.     }  
  12.     ~A() {  
  13.         delete[] data_;  
  14.     }  
  15.     int *data_;  
  16.     int size_;  
  17. };  
  18. int main() {  
  19.     A a(10);  
  20.     A b = a 
  21.     cout << "b " << b.data_ << endl 
  22.     cout << "a " << a.data_ << endl 
  23.     return 0;  

深拷貝就是再拷貝對(duì)象時(shí),如果被拷貝對(duì)象內(nèi)部還有指針引用指向其它資源,自己需要重新開辟一塊新內(nèi)存存儲(chǔ)資源,而不是簡(jiǎn)單的賦值。

聊完了深拷貝淺拷貝,可以聊聊移動(dòng)語義啦:

移動(dòng)語義,在程序喵看來可以理解為轉(zhuǎn)移所有權(quán),之前的拷貝是對(duì)于別人的資源,自己重新分配一塊內(nèi)存存儲(chǔ)復(fù)制過來的資源,而對(duì)于移動(dòng)語義,類似于轉(zhuǎn)讓或者資源竊取的意思,對(duì)于那塊資源,轉(zhuǎn)為自己所擁有,別人不再擁有也不會(huì)再使用,通過C++11新增的移動(dòng)語義可以省去很多拷貝負(fù)擔(dān),怎么利用移動(dòng)語義呢,是通過移動(dòng)構(gòu)造函數(shù)。 

  1. class A {  
  2. public:  
  3.     A(int size) : size_(size) {  
  4.         data_ = new int[size];  
  5.     }  
  6.     A(){}  
  7.     A(const A& a) {  
  8.         size_ = a.size_;  
  9.         data_ = new int[size_];  
  10.         cout << "copy " << endl 
  11.     }  
  12.     A(A&& a) {  
  13.         this->data_ = a.data_; 
  14.          a.data_ = nullptr 
  15.         cout << "move " << endl 
  16.     }  
  17.     ~A() {  
  18.         if (data_ != nullptr) {  
  19.          delete[] data_;  
  20.         }  
  21.     }  
  22.     int *data_;  
  23.     int size_; 
  24.  };  
  25. int main() {  
  26.     A a(10);  
  27.     A b = a 
  28.     A c = std::move(a); // 調(diào)用移動(dòng)構(gòu)造函數(shù)  
  29.     return 0;  

如果不使用std::move(),會(huì)有很大的拷貝代價(jià),使用移動(dòng)語義可以避免很多無用的拷貝,提供程序性能,C++所有的STL都實(shí)現(xiàn)了移動(dòng)語義,方便我們使用。例如: 

  1. std::vector<string> vecs;  
  2. ...  
  3. std::vector<string> vecm = std::move(vecs); // 免去很多拷貝 

注意:移動(dòng)語義僅針對(duì)于那些實(shí)現(xiàn)了移動(dòng)構(gòu)造函數(shù)的類的對(duì)象,對(duì)于那種基本類型int、float等沒有任何優(yōu)化作用,還是會(huì)拷貝,因?yàn)樗鼈儗?shí)現(xiàn)沒有對(duì)應(yīng)的移動(dòng)構(gòu)造函數(shù)。

完美轉(zhuǎn)發(fā)

完美轉(zhuǎn)發(fā)指可以寫一個(gè)接受任意實(shí)參的函數(shù)模板,并轉(zhuǎn)發(fā)到其它函數(shù),目標(biāo)函數(shù)會(huì)收到與轉(zhuǎn)發(fā)函數(shù)完全相同的實(shí)參,轉(zhuǎn)發(fā)函數(shù)實(shí)參是左值那目標(biāo)函數(shù)實(shí)參也是左值,轉(zhuǎn)發(fā)函數(shù)實(shí)參是右值那目標(biāo)函數(shù)實(shí)參也是右值。那如何實(shí)現(xiàn)完美轉(zhuǎn)發(fā)呢,答案是使用std::forward()。 

  1. void PrintV(int &t) {  
  2.     cout << "lvalue" << endl 
  3.  
  4. void PrintV(int &&t) {  
  5.     cout << "rvalue" << endl 
  6.  
  7. template<typename T>  
  8. void Test(T &&t) {  
  9.     PrintV(t);  
  10.     PrintV(std::forward<T>(t));   
  11.     PrintV(std::move(t));  
  12.  
  13. int main() {  
  14.     Test(1); // lvalue rvalue rvalue  
  15.     int a = 1 
  16.     Test(a); // lvalue lvalue rvalue  
  17.     Test(std::forward<int>(a)); // lvalue rvalue rvalue  
  18.     Test(std::forward<int&>(a)); // lvalue lvalue rvalue  
  19.     Test(std::forward<int&&>(a)); // lvalue rvalue rvalue  
  20.     return 0;  

分析

  •  Test(1):1是右值,模板中T &&t這種為萬能引用,右值1傳到Test函數(shù)中變成了右值引用,但是調(diào)用PrintV()時(shí)候,t變成了左值,因?yàn)樗兂闪艘粋€(gè)擁有名字的變量,所以打印lvalue,而PrintV(std::forward<T>(t))時(shí)候,會(huì)進(jìn)行完美轉(zhuǎn)發(fā),按照原來的類型轉(zhuǎn)發(fā),所以打印rvalue,PrintV(std::move(t))毫無疑問會(huì)打印rvalue。
  •  Test(a):a是左值,模板中T &&這種為萬能引用,左值a傳到Test函數(shù)中變成了左值引用,所以有代碼中打印。
  •  Test(std::forward<T>(a)):轉(zhuǎn)發(fā)為左值還是右值,依賴于T,T是左值那就轉(zhuǎn)發(fā)為左值,T是右值那就轉(zhuǎn)發(fā)為右值。

返回值優(yōu)化

返回值優(yōu)化(RVO)是一種C++編譯優(yōu)化技術(shù),當(dāng)函數(shù)需要返回一個(gè)對(duì)象實(shí)例時(shí)候,就會(huì)創(chuàng)建一個(gè)臨時(shí)對(duì)象并通過復(fù)制構(gòu)造函數(shù)將目標(biāo)對(duì)象復(fù)制到臨時(shí)對(duì)象,這里有復(fù)制構(gòu)造函數(shù)和析構(gòu)函數(shù)會(huì)被多余的調(diào)用到,有代價(jià),而通過返回值優(yōu)化,C++標(biāo)準(zhǔn)允許省略調(diào)用這些復(fù)制構(gòu)造函數(shù)。

那什么時(shí)候編譯器會(huì)進(jìn)行返回值優(yōu)化呢?

  •  return的值類型與函數(shù)的返回值類型相同
  •  return的是一個(gè)局部對(duì)象

看幾個(gè)例子:

示例1: 

  1. std::vector<int> return_vector(void) {  
  2.     std::vector<int> tmp {1,2,3,4,5};  
  3.     return tmp;  
  4.  
  5. std::vector<int> &&rval_ref = return_vector(); 

不會(huì)觸發(fā)RVO,拷貝構(gòu)造了一個(gè)臨時(shí)的對(duì)象,臨時(shí)對(duì)象的生命周期和rval_ref綁定,等價(jià)于下面這段代碼: 

  1. const std::vector<int>rval_ref = return_vector(); 

示例2: 

  1. std::vector<int>&& return_vector(void) {  
  2.     std::vector<int> tmp {1,2,3,4,5};  
  3.     return std::move(tmp); 
  4.  
  5. std::vector<int> &&rval_ref = return_vector(); 

這段代碼會(huì)造成運(yùn)行時(shí)錯(cuò)誤,因?yàn)閞val_ref引用了被析構(gòu)的tmp。講道理來說這段代碼是錯(cuò)的,但我自己運(yùn)行過程中卻成功了,我沒有那么幸運(yùn),這里不糾結(jié),繼續(xù)向下看什么時(shí)候會(huì)觸發(fā)RVO。

示例3: 

  1. std::vector<int> return_vector(void) {  
  2.     std::vector<int> tmp {1,2,3,4,5};  
  3.     return std::move(tmp);  
  4.  
  5. std::vector<int> &&rval_ref = return_vector(); 

和示例1類似,std::move一個(gè)臨時(shí)對(duì)象是沒有必要的,也會(huì)忽略掉返回值優(yōu)化。

最好的代碼: 

  1. std::vector<int> return_vector(void) {  
  2.     std::vector<int> tmp {1,2,3,4,5};  
  3.     return tmp;  
  4.  
  5. std::vector<int> rval_ref = return_vector(); 

這段代碼會(huì)觸發(fā)RVO,不拷貝也不移動(dòng),不生成臨時(shí)對(duì)象。 

 

責(zé)任編輯:龐桂玉 來源: C語言與C++編程
相關(guān)推薦

2021-02-01 08:39:26

JTAG接口Jlink

2020-12-08 11:08:55

時(shí)間復(fù)雜度軟件

2021-07-19 08:33:56

時(shí)間復(fù)雜度大O

2022-10-12 08:22:44

Guava工具Collection

2021-12-09 08:16:40

JVM參數(shù)系統(tǒng)

2021-07-01 09:00:00

安全數(shù)字化轉(zhuǎn)型滲透

2020-06-02 07:00:00

會(huì)話安全黑客攻擊

2017-08-29 11:21:03

微軟

2019-11-04 09:07:48

DevOps互聯(lián)網(wǎng)IT

2023-09-11 08:51:23

LinkedList雙向鏈表線程

2021-06-17 13:40:47

區(qū)塊鏈比特幣公有鏈

2021-05-17 07:04:07

動(dòng)態(tài)代理面試

2020-03-18 18:20:19

區(qū)塊鏈數(shù)字貨幣比特幣

2019-04-24 08:31:43

分布式限流kafka

2025-06-03 10:10:00

C++左值右值

2019-12-25 14:00:26

數(shù)據(jù)科學(xué)人工智能科學(xué)家

2021-12-27 08:00:00

Kubernetes容器安全

2020-12-23 09:00:00

開發(fā)Web工具

2022-09-22 08:00:00

API開發(fā)數(shù)據(jù)

2018-11-28 10:39:01

5G網(wǎng)絡(luò)運(yùn)營商
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

一本久道中文字幕精品亚洲嫩| 国产一区二区三区精品视频| 精品视频在线播放免| 日韩av片网站| 男男gaygays亚洲| 久久久综合视频| 成人精品一区二区三区电影免费 | 福利一区视频在线观看| 午夜精品福利一区二区| 女人18毛片一区二区三区| 日韩电影在线免费观看| 欧美国产在线电影| 99国产精品无码| 欧美变态网站| 日韩一区二区免费在线观看| 日韩久久一级片| 日日夜夜天天综合入口| 国产女人aaa级久久久级| 北条麻妃高清一区| 91精品中文字幕| 亚洲免费影院| 欧美第一页在线| 成人黄色短视频| 蜜桃成人av| 欧美v日韩v国产v| 亚洲免费999| 日本欧美日韩| 天天影视色香欲综合网老头| 欧美视频在线第一页| 日韩黄色影院| 国产欧美综合色| 欧美理论一区二区| 亚洲色图21p| 成人国产精品免费观看动漫| 91免费在线观看网站| 在线观看国产小视频| 可以看av的网站久久看| 97视频com| 日韩激情一区二区三区| 欧美激情精品久久久六区热门| 最近2019年日本中文免费字幕| 中文字幕丰满乱子伦无码专区| 国产精品一线| 欧美大片在线观看一区| 国内精品国产三级国产aⅴ久| 色综合视频一区二区三区44| 欧美伊人久久大香线蕉综合69| 国产日韩一区二区在线| 牛牛精品一区二区| 欧美日韩综合视频| 黄色免费视频大全| 深夜成人在线| 色综合天天性综合| 可以免费观看av毛片| 欧美激情网站| 一本一道久久a久久精品| 国产69精品久久久久999小说| 国产精品一品| 精品国产乱码久久久久久天美 | 99国产欧美另类久久久精品 | 熟妇高潮一区二区高潮| va亚洲va日韩不卡在线观看| 国产在线精品一区二区三区》| 亚洲欧美高清视频| 99久久精品国产麻豆演员表| 欧美日韩无遮挡| 超碰在线影院| 亚洲欧洲三级电影| 青青草视频国产| 青青草原av在线| 黄色精品一区二区| 在线视频日韩一区| 在线观看亚洲精品福利片| 91精品国产综合久久香蕉的特点| 野花视频免费在线观看| youjizz亚洲| 亚洲精品天天看| 最新中文字幕av| 亚洲精品成人影院| 午夜精品一区二区三区av| 黄色免费av网站| 美腿丝袜亚洲色图| 99三级在线| 久久天堂电影| 国产精品盗摄一区二区三区| 国产在线观看欧美| 日韩电影免费观看高清完整版| 欧美日韩日日夜夜| 成年人小视频在线观看| 国产一区毛片| 欧美精品性视频| 人人妻人人爽人人澡人人精品| 精品在线播放免费| 精品国产一区二区三区四区vr| 国产福利在线观看| 亚洲一区二区成人在线观看| 精品久久久久久无码国产| 高清久久一区| 亚洲日韩欧美视频一区| 极品久久久久久| 久久激情一区| 成人欧美视频在线| 999国产在线视频| 亚洲福利视频一区二区| 日日干夜夜操s8| 欧美18免费视频| 久热在线中文字幕色999舞| 久久免费激情视频| 国产黄色精品网站| 日本一区二区在线视频观看| 日本小视频在线免费观看| 欧美性猛交xxxx乱大交退制版| 乱码一区二区三区| 99re66热这里只有精品8| 2018国产精品视频| 成人av无码一区二区三区| 国产精品丝袜一区| 超碰网在线观看| 久久综合五月婷婷| 久久69精品久久久久久久电影好| 国产情侣小视频| 91色视频在线| 日本熟妇人妻xxxx| 精品伊人久久| 久久精品亚洲精品| 午夜视频网站在线观看| 久久这里都是精品| 国产 日韩 欧美在线| 免费精品一区二区三区在线观看| 最近2019中文字幕第三页视频| 天天综合网久久综合网| 北岛玲一区二区三区四区| 最近免费观看高清韩国日本大全| 国产成人精选| 在线不卡国产精品| 无码无套少妇毛多18pxxxx| 91蝌蚪国产九色| 免费国产黄色网址| 美日韩黄色大片| 97久久精品视频| 亚洲人午夜射精精品日韩| 亚洲高清久久久| 国产精品无码在线| 9国产精品视频| 精品日本一区二区三区在线观看| 黄页网站在线| 亚洲成人亚洲激情| 日韩xxx高潮hd| 99久久99精品久久久久久| 人妻夜夜添夜夜无码av | 日韩欧美三级电影| 一区二区视频免费完整版观看| 亚洲欧美在线一区二区| 久久精品久久久久久久| 国产校园另类小说区| 超碰网在线观看| 成人动漫免费在线观看| 国产精品人人做人人爽| av在线电影观看| 欧美精品aⅴ在线视频| 成人涩涩小片视频日本| 国产精品12区| 国产极品尤物在线| 亚洲人成网亚洲欧洲无码| 国产精品第3页| 免费在线看黄| 欧美成人aa大片| 国产福利拍拍拍| 久久久精品人体av艺术| 日本激情视频在线| 久久精品欧美一区| 国产精品久久九九| 中文在线资源| 中文字幕欧美日韩| www.热久久| 狠狠躁夜夜躁人人爽天天天天97| 国产真人做爰视频免费| 久久99国产精品免费| 国产成人一二三区| 欧美亚洲大陆| 国产剧情久久久久久| 伊人精品影院| 精品亚洲国产视频| 亚洲无码久久久久| 亚洲一区国产视频| 一区二区黄色片| 国产又粗又猛又爽又黄91精品| 精品无码国产一区二区三区av| 自拍自偷一区二区三区| 91精品一区二区| 中文字幕影音在线| 一区二区三区国产视频| 亚洲AV无码一区二区三区少妇| 精品欧美aⅴ在线网站| 蜜桃av免费观看| 成人h版在线观看| jizzzz日本| 亚洲一区二区动漫| 色中文字幕在线观看| 五月综合久久| 亚洲综合av影视| 日本综合视频| 97精品久久久中文字幕免费| 最新av网站在线观看| 亚洲精品电影在线观看| 91福利免费视频| 一本久久a久久精品亚洲| 久久久久久久久毛片| 国产午夜精品久久久久久久 | 精品国产123区| 国产精品视频一区二区三区经| 99久久久国产精品免费调教网站| 国外视频精品毛片| 国产精品va在线观看视色| 亚洲美女免费精品视频在线观看| 超碰免费在线97| 欧美人狂配大交3d怪物一区| 天码人妻一区二区三区在线看 | 精品人妻无码一区二区性色| 亚洲综合男人的天堂| 欧美日韩国产一二三区| 久久九九全国免费| 四虎成人免费视频| 国产酒店精品激情| 99sesese| 免费在线观看不卡| 手机看片福利盒子久久| 国产欧美短视频| 青青草视频在线免费播放| 欧美精品三级| 久久久成人精品一区二区三区| 日韩欧美高清在线播放| 日本不卡一区| 国产成人精品三级高清久久91| 精品无人区一区二区三区| 97品白浆高清久久久久久| 91亚色免费| 日韩免费成人| 成人久久18免费网站漫画| 国产色99精品9i| 51国产成人精品午夜福中文下载| 国产精品美女午夜爽爽| 国产精品丝袜白浆摸在线| ww久久综合久中文字幕| 国产精品嫩草影院久久久| 毛片无码国产| 国产精品 欧美在线| 激情开心成人网| 国产精品久久久久久久久免费 | 欧美视频第二页| 中文字幕 视频一区| 欧美性一二三区| 一女二男一黄一片| 7777女厕盗摄久久久| 国产手机精品视频| 精品美女一区二区三区| 手机看片国产1024| 亚洲欧美国产精品va在线观看| 韩国中文字幕2020精品| 中文字幕欧美日韩精品| 成人在线免费看黄| 午夜欧美大片免费观看| 成人性生活av| 国产精品美女久久久免费| 日韩欧乱色一区二区三区在线 | 亚洲欧美日韩人成在线播放| 男人的午夜天堂| 一区二区三区高清在线| 日韩欧美三级在线观看| 色综合一区二区三区| 亚洲无码久久久久| 欧美mv和日韩mv的网站| 你懂的免费在线观看| 日韩中文字幕国产| 欧美家庭影院| 日韩av电影手机在线| 欧美一级做一级爱a做片性| 成人免费看片网址| 国产乱码精品一区二区三区四区| 亚洲综合av一区| 亚洲激情女人| www.99r| 99在线精品观看| 欧美巨胸大乳hitomi| 亚洲一区二区三区在线播放| www.伊人久久| 日韩视频中午一区| 免费在线一级视频| 久久国产精品久久久久久久久久| 精品众筹模特私拍视频| 国产欧美韩国高清| 欧洲vs亚洲vs国产| 91xxx视频| 欧美中文字幕| 极品白嫩少妇无套内谢| 欧美韩国日本综合| 国产精品19乱码一区二区三区| 欧美日韩一区二区不卡| 手机在线精品视频| 欧美理论片在线观看| av在线不卡精品| 国产亚洲情侣一区二区无| 93在线视频精品免费观看| 波多野结衣之无限发射| 精彩视频一区二区| 亚洲欧美va天堂人熟伦| 天天影视涩香欲综合网| 亚洲成a人片在线| 色综久久综合桃花网| 亚洲黄色中文字幕| 国产精品乱码| 伊人久久大香线蕉精品组织观看| 国产最新免费视频| 成人性生交大片免费| 亚洲一级生活片| 欧美在线免费观看视频| 亚洲 欧美 激情 小说 另类| 欧美成人在线网站| **国产精品| 亚洲一区3d动漫同人无遮挡| 久久国产精品亚洲77777| 亚洲精品久久一区二区三区777 | 久久精品电影网站| 伊人色综合一区二区三区影院视频 | 国产在线成人精品午夜| 欧美一区二区三区的| 在线免费看av| 国产精品久久77777| 伊人成综合网yiren22| 国产免费黄视频| 91在线观看地址| 西西44rtwww国产精品| 精品国产一区二区三区不卡| 污污的视频在线观看| 91精品天堂| 午夜精彩国产免费不卡不顿大片| 欧美成年人视频在线观看| 国产精品污网站| 中文字幕在线观看免费| 最新69国产成人精品视频免费| 素人一区二区三区| 天堂资源在线亚洲资源| 奇米影视7777精品一区二区| 中文字幕第24页| 欧美三片在线视频观看 | 亚洲天堂精品视频| 91超薄丝袜肉丝一区二区| 久久亚洲精品一区| 久久久久久久久成人| 狠狠精品干练久久久无码中文字幕| 国产高清精品在线| 久久97人妻无码一区二区三区| 日韩视频一区二区三区 | 国产精品18久久久久久首页狼| 免费久久精品| av网站在线不卡| 亚洲男人电影天堂| 亚洲av无码乱码国产精品久久| 国内久久久精品| 国产91久久精品一区二区| 性欧美极品xxxx欧美一区二区| 国产精品免费看片| 国产女人18毛片18精品| 久久久综合免费视频| 一个色免费成人影院| 国产91色在线观看| 亚洲免费成人av| 亚洲色图 校园春色| 国产精品久久久久久久久久免费| 91亚洲国产| 男人的天堂影院| 欧美主播一区二区三区美女| 免费高清在线观看| 国产视色精品亚洲一区二区| 久久资源在线| 亚洲熟女www一区二区三区| 日韩高清av一区二区三区| 精品欧美一区二区三区在线观看| 超碰成人在线免费观看| 成人av在线看| 91tv国产成人福利| 国内外成人免费激情在线视频| 欧美亚洲高清| 黄色av电影网站| 色999日韩国产欧美一区二区| 午夜看片在线免费| 国产精品日韩二区| 日韩黄色小视频| 欧美片一区二区| 亚洲视频综合网| 伊人久久影院| 91福利国产成人精品播放| 亚洲国产日韩av| 丝袜美腿美女被狂躁在线观看| 国产欧美一区二区三区不卡高清| 免费看黄色91| 成年人免费看毛片| 麻豆国产精品va在线观看不卡| 日韩精选在线| 蜜桃色一区二区三区|