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

Modern C++ 最核心的變化是什么?

開發 后端
右值引用的意義通常解釋為兩大作用:移動語義和完美轉發。本文主要討論移動語義。

個人覺得最核心的變化是右值引用的引入,右值引用是  C++ 走向現代化的最重要一步。建議每一位 C++ 開發者都應該深入去了解并充分使用它。

右值引用是 C++11 中最重要的新特性之一,它解決了 C++ 中大量的歷史遺留問題,使 C++ 標準庫的實現在多種場景下消除了不必要的額外開銷(如 std::vector, std::string),也使得另外一些標準庫(如 std::unique_ptr, std::function)成為可能。即使你并不直接使用右值引用,也可以通過標準庫,間接從這一新特性中受益。為了更好地理解標準庫結合右值引用帶來的優化,我們有必要了解一下右值引用的重大意義。

右值引用的意義通常解釋為兩大作用:移動語義和完美轉發。本文主要討論移動語義。

一、移動語義

移動語義,簡單來說解決的是各種情形下對象的資源所有權轉移的問題。而在 C++11 之前,移動語義的缺失是 C++ 飽受詬病的問題之一。

舉個例子。

問題一:如何將大象放入冰箱?

答案是眾所周知的。首先你需要有一臺特殊的冰箱,這臺冰箱是為了裝下大象而制造的。你打開冰箱門,將大象放入冰箱,然后關上冰箱門。

問題二:如何將大象從一臺冰箱轉移到另一臺冰箱?

普通解答:

打開冰箱門,取出大象,關上冰箱門,打開另一臺冰箱門,放進大象,關上冰箱門。

2B 解答:

在第二個冰箱中啟動量子復制系統,克隆一只完全相同的大象,然后啟動高能激光將第一個冰箱內的大象氣化消失。

等等,這個 2B 解答聽起來很耳熟,這不就是 C++ 中要移動一個對象時所做的事情嗎?

“移動”,這是一個三歲小孩都明白的概念。將大象(資源)從一臺冰箱(對象)移動到另一臺冰箱,這個行為是如此自然,沒有任何人會采用先復制大象,再銷毀大象這樣匪夷所思的方法。C++ 通過拷貝構造函數和拷貝賦值操作符為類設計了拷貝/復制的概念,但為了實現對資源的移動操作,調用者必須使用先復制、再析構的方式。否則,就需要自己實現移動資源的接口。

為了實現移動語義,首先需要解決的問題是,如何標識對象的資源是可以被移動的呢?這種機制必須以一種最低開銷的方式實現,并且對所有的類都有效。C++ 的設計者們注意到,大多數情況下,右值所包含的對象都是可以安全的被移動的。

右值(相對應的還有左值)是從 C 語言設計時就有的概念,但因為其如此基礎,也是一個最常被忽略的概念。不嚴格的來說,左值對應變量的存儲位置,而右值對應變量的值本身。C++ 中右值可以被賦值給左值或者綁定到引用。類的右值是一個臨時對象,如果沒有被綁定到引用,在表達式結束時就會被廢棄。于是我們可以在右值被廢棄之前,移走它的資源進行廢物利用,從而避免無意義的復制。被移走資源的右值在廢棄時已經成為空殼,析構的開銷也會降低。

右值中的數據可以被安全移走這一特性使得右值被用來表達移動語義。以同類型的右值構造對象時,需要以引用形式傳入參數。右值引用顧名思義專門用來引用右值,左值引用和右值引用可以被分別重載,這樣確保左值和右值分別調用到拷貝和移動的兩種語義實現。對于左值,如果我們明確放棄對其資源的所有權,則可以通過std::move()來將其轉為右值引用。std::move()實際上是 static_cast<T&&>() 的簡單封裝。

右值引用至少可以解決以下場景中的移動語義缺失問題:

1.按值傳入參數

按值傳參是最符合人類思維的方式。基本的思路是,如果傳入參數是為了將資源交給函數接受者,就應該按值傳參。同時,按值傳參可以兼容任何的 cv-qualified 左值、右值,是兼容性最好的方式。

class People {
public:
// 按值傳入字符串,可接收左值、右值。
// 接收左值時為復制,接收右值時為移動
People(string name)
: name_(move(name)) // 顯式移動構造,將傳入的字符串移入成員變量
{
}
string name_;
};
People a("Alice"); // 移動構造name
string bn = "Bob";
People b(bn); // 拷貝構造name

構造a時,調用了一次字符串的構造函數和一次字符串的移動構造函數。如果使用 const string& name 接收參數,那么會有一次構造函數和一次拷貝構造,以及一次 non-trivial 的析構。盡管看起來很蛋疼,盡管編譯器還有優化,但從語義來說按值傳入參數是最優的方式。

如果你要在構造函數中接收 std::shared_ptr<X> 并且存入類的成員(這是非常常見的),那么按值傳入更是不二選擇。拷貝 std::shared_ptr<X> 需要線程同步,相比之下移動 std::shared_ptr 是非常輕松愉快的。

2.按值返回

和接收輸入參數一樣,返回值按值返回也是最符合人類思維的方式。曾經有無數函數為了返回容器而不得不寫成這樣:

// 一個按值語義定義的字符串拆分函數
void str_split(const string& s, vector<string>* vec);

這里不考慮分隔符,假定分隔符是固定的。這樣要求 vec在外部被事先構造,此時尚無從得知vec的大小。即使函數內部有辦法預測vec的大小,因為函數并不負責構造vec,很可能仍需要 resize`。

對這樣的函數嵌套調用更是痛苦的事情,誰用誰知道啊。

有了移動語義,就可以寫成這樣:

vector<string> str_split(const string& s) {
vector<string> v;
// ...
return v; // v是左值,但優先移動,不支持移動時仍可復制。
}

如果函數按值返回,return 語句又直接返回了一個棧上的左值對象(輸入參數除外)時,標準要求優先調用移動構造函數,如果不符再調用拷貝構造函數。盡管 ``v是左值,仍然會優先采用移動語義,返回 vector` 從此變得云淡風輕。此外,無論移動或是拷貝,可能的情況下仍然適用編譯器優化,但語義不受影響。

對于 std::unique_ptr 來說,這簡直就是福音。

unique_ptr<SomeObj> create_obj(/*...*/) {
unique_ptr<SomeObj> ptr(new SomeObj(/*...*/));
ptr->foo(); // 一些可能的初始化
return ptr;
}

當然還有更簡單的形式:

unique_ptr<SomeObj> create_obj(/*...*/) {
return unique_ptr<SomeObj>(new SomeObj(/*...*/));
}

在工廠類中,這樣的語義是非常常見的。返回 unique_ptr 能夠明確對所構造對象的所有權轉移,特別的,這樣的工廠類返回值可以被忽略而不會造成內存泄露。上面兩種形式分別返回棧上的左值和右值,但都適用移動語義(unique_ptr 不支持拷貝)。

3.接收右值表達式

沒有移動語義時,以表達式的值(例為函數調用)初始化對象或者給對象賦值是這樣的:

vector<string> str_split(const string& s);
// 返回的vector用以拷貝構造對象v。為v申請堆內存,復制數據,然后析構臨時對象(釋放堆內存)。
vector<string> v = str_split("1,2,3");
vector<string> v2;
// 返回的vector被復制給對象v(拷貝賦值操作符)。需要先清理v2中原有數據,將臨時對象中的數據復制給v2,然后析構臨時對象。
v2 = str_split("1,2,3");
  •  注:v 的拷貝構造調用有可能被優化掉,盡管如此在語義上仍然是有一次拷貝操作。

同樣的代碼,在支持移動語義的世界里就變得更美好了。

vector<string> str_split(const string& s);
// 返回的vector用以移動構造對象v。v直接取走臨時對象的堆上內存,無需新申請。之后臨時對象成為空殼,不再擁有任何資源,析構時也無需釋放堆內存。
vector<string> v = str_split("1,2,3");
vector<string> v2;
// 返回的vector被移動給對象v(移動賦值操作符)。先釋放v2原有數據,然后直接從返回值中取走數據,然后返回值被析構。
v2 = str_split("1,2,3");
  •  注:v 的移動構造調用有可能被優化掉,盡管如此在語義上仍然是有一次移動操作。

不用多說也知道上面的形式是多么常用和自然。而且這里完全沒有任何對右值引用的顯式使用,性能提升卻默默的實現了。

4.對象存入容器

這個問題和前面的構造函數傳參是類似的。不同的是這里是按兩種引用分別傳參。參見 std::vector 的 push_back 函數。

void push_back( const T& value ); // (1)
void push_back( T&& value ); // (2)

不用多說自然是左值調用 1 右值調用 2。如果你要往容器內放入超大對象,那么版本 2 自然是不 2 選擇。

vector<vector<string>> vv;
vector<string> v = {"123", "456"};
v.push_back("789"); // 臨時構造的string類型右值被移動進容器v
vv.push_back(move(v)); // 顯式將v移動進vv

困擾多年的難言之隱是不是一洗了之了?

5.std::vector 的增長

又一個隱蔽的優化。當 vector 的存儲容量需要增長時,通常會重新申請一塊內存,并把原來的內容一個個復制過去并刪除。對,復制并刪除,改用移動就夠了。

對于像 vector<string> 這樣的容器,如果頻繁插入造成存儲容量不可避免的增長時,移動語義可以帶來悄無聲息而且美好的優化。

6.std::unique_ptr放入容器

曾經,由于 vector 增長時會復制對象,像 std::unique_ptr 這樣不可復制的對象是無法放入容器的。但實際上 vector 并不復制對象,而只是“移動”對象。所以隨著移動語義的引入,std::unique_ptr 放入 std::vector 成為理所當然的事情。

容器中存儲 std::unique_ptr 有太多好處。想必每個人都寫過這樣的代碼:

MyObj::MyObj() {
for (...) {
vec.push_back(new T());
}
// ...
}
MyObj::~MyObj() {
for (vector<T*>::iterator iter = vec.begin(); iter != vec.end(); ++iter) {
if (*iter) delete *iter;
}
// ...
}

繁瑣暫且不說,異常安全也是大問題。使用 vector<unique_ptr<T>>,完全無需顯式析構,unqiue_ptr 自會打理一切。完全不用寫析構函數的感覺,你造嗎?

unique_ptr 是非常輕量的封裝,存儲空間等價于裸指針,但安全性強了一個世紀。實際中需要共享所有權的對象(指針)是比較少的,但需要轉移所有權是非常常見的情況。auto_ptr 的失敗就在于其轉移所有權的繁瑣操作。unique_ptr 配合移動語義即可輕松解決所有權傳遞的問題。

  •  注:如果真的需要共享所有權,那么基于引用計數的 shared_ptr 是一個好的選擇。shared_ptr 同樣可以移動。由于不需要線程同步,移動 shared_ptr 比復制更輕量。

7.std::thread 的傳遞

thread 也是一種典型的不可復制的資源,但可以通過移動來傳遞所有權。同樣 std::future std::promise std::packaged_task 等等這一票多線程類都是不可復制的,也都可以用移動的方式傳遞。

二、完美轉發

除了移動語義,右值引用還解決了 C++03 中引用語法無法轉發右值的問題,實現了完美轉發,才使得 std::function 能有一個優雅的實現。這部分不再展開了。

三、總結

移動語義絕不是語法糖,而是帶來了 C++ 的深刻革新。移動語義不僅僅是針對庫作者的,任何一個程序員都有必要去了解它。盡管你可能不會去主動為自己的類實現移動語義,但卻時時刻刻都在享受移動語義帶來的受益。因此這絕不意味著這是一個可有可無的東西。

所以,如果你要寫出優雅的 Modern C++ 代碼,應該多使用右值引用,喜歡它,擁抱它。

責任編輯:龐桂玉 來源: C語言與C++編程
相關推薦

2016-10-20 16:07:11

C++Modern C++異步

2022-02-16 12:52:22

C++項目編譯器

2010-02-05 14:51:48

C++托管

2019-07-17 13:41:36

VueReactJSX

2024-02-26 00:05:00

C++開發

2010-01-25 18:05:40

C++語言

2020-08-02 19:55:46

Python編程語言技術

2018-04-04 14:29:33

2010-01-25 16:58:15

C++程序

2011-03-31 09:22:56

c++

2011-05-16 13:44:11

C++

2016-01-04 08:52:11

2022-08-02 12:12:07

勒索軟件API安全網絡漏洞

2020-03-10 11:00:22

CIO核心競爭力競爭力

2022-03-16 14:10:45

數字化轉型企業信息化

2012-07-17 10:54:21

大數據

2015-12-07 10:09:40

程序員噩夢

2015-12-04 08:49:00

程序員夢魘

2017-02-05 14:49:39

2015-08-26 09:54:19

物聯網
點贊
收藏

51CTO技術棧公眾號

色是在线视频| 国产www免费观看| 欧美艳星介绍134位艳星| 欧美蜜桃一区二区三区| 青春草国产视频| 香港三日本三级少妇66| 蜜臀久久久99精品久久久久久| 视频一区视频二区国产精品| 性xxxxxxxxx| 黑人精品一区| 亚洲欧美电影院| 精品日韩欧美| 国产免费高清av| 亚洲免费影院| 色综合色综合久久综合频道88| 国产福利短视频| 综合久久av| 婷婷国产v国产偷v亚洲高清| 亚洲一二三区在线| 日本免费网站在线观看| 欧美成a人片免费观看久久五月天| 亚洲欧美在线观看| 欧美日韩高清免费| www精品国产| 日本不卡一二三区黄网| 国内自拍欧美激情| 杨钰莹一级淫片aaaaaa播放| 亚洲成人不卡| 亚洲国产综合91精品麻豆| 亚洲午夜激情| 久久国产精品高清一区二区三区| 国产在线看一区| 国产精品白嫩初高中害羞小美女 | 亚洲成人精品综合在线| 精品久久久久久久久久久久| 欧美日韩一区二区三区电影| 精品亚洲综合| 97aⅴ精品视频一二三区| 亚洲最大的成人网| 中文字幕第2页| 久久久久网站| 久久男人av资源网站| 欧美风情第一页| 欧美在线观看视频一区| 亚洲欧美在线免费| 免费看黄色aaaaaa 片| 1313精品午夜理伦电影| 日韩午夜小视频| 午夜激情影院在线观看| 国产第一亚洲| 欧美日韩中文另类| 五月婷婷激情久久| 电影一区二区| 欧美日韩一区中文字幕| www.涩涩涩| 久草综合在线| 欧美日韩国产经典色站一区二区三区| 国产精品无码av无码| 深夜成人福利| 日本乱人伦一区| 国产女女做受ⅹxx高潮| 韩日精品一区二区| 欧美性感一区二区三区| 国产精品v日韩精品v在线观看| 99久久久国产精品免费调教网站| 91成人网在线| 欧美精品久久久久久久久25p| 91福利精品在线观看| 欧美日韩高清一区二区不卡| 尤物国产在线观看| 国产激情精品一区二区三区| 91精品国产综合久久久久久漫画| 在线播放黄色av| 91成人福利| 日韩av中文字幕在线播放| 丰满大乳奶做爰ⅹxx视频| 天堂99x99es久久精品免费| 日韩hd视频在线观看| 亚洲激情视频小说| 久久蜜桃av| 欧美精品午夜视频| 91午夜视频在线观看| 三级不卡在线观看| 一区二区高清视频在线观看| 精品福利一二区| 秘密基地免费观看完整版中文| 黑色丝袜福利片av久久| 亚洲欧美一区二区三区情侣bbw | 红杏aⅴ成人免费视频| 亚洲欧美一区二区三区久久 | 亚洲在线一区二区三区| 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 亚洲va男人天堂| 亚洲国产成人精品一区二区三区| 99国产精品视频免费观看| 日韩高清av| 欧美videosex性欧美黑吊| 亚洲一区二区三区视频在线播放| 99999精品视频| 91麻豆精品国产综合久久久 | 狠狠色狠狠色综合日日小说 | 国产999精品久久久久久绿帽| 精品国产区在线| 日本中文字幕在线2020| 亚洲.国产.中文慕字在线| 天天干天天干天天干天天干天天干| 精品国产亚洲一区二区三区| 亚洲精品视频在线观看视频| 天天鲁一鲁摸一摸爽一爽| 国产欧美高清| 亚洲专区国产精品| 国产黄在线播放| 亚洲国产日韩在线一区模特| 精品乱色一区二区中文字幕| 国产高清在线观看| 亚洲国产精品久久人人爱蜜臀| 青青在线免费观看视频| 大奶在线精品| zzjj国产精品一区二区| 日韩不卡在线播放| 懂色一区二区三区免费观看| 亚洲欧美成人一区| 中文字幕在线中文字幕在线中三区| 欧美一区二区免费视频| 亚洲自拍偷拍图| 99国产精品| 999国内精品视频在线| av基地在线| 色屁屁一区二区| 91精品又粗又猛又爽| 久久久久久久久国产一区| 国产91在线播放| 日韩一级片免费| 亚洲精品网站在线观看| 天天爽夜夜爽一区二区三区| 亚洲肉体裸体xxxx137| 久久免费视频网| 亚洲精品视频网| 亚洲啪啪综合av一区二区三区| 一级在线免费视频| 成人高清av| 国产精品大陆在线观看| 色播色播色播色播色播在线| 午夜精品久久久久久不卡8050| 亚洲性图第一页| 欧美精品99| 147欧美人体大胆444| а√天堂资源地址在线下载| 欧美巨大另类极品videosbest | 国产chinasex对白videos麻豆| 国产精品网站在线| 九色91popny| 成人网18免费网站| 国产精品亚洲激情| 老司机午夜在线| 欧美一区二区三区在线视频| 成人在线观看小视频| 狠狠色丁香久久婷婷综合_中| 亚洲一区三区视频在线观看| 四虎国产精品成人免费影视| 久久九九有精品国产23| 国产黄色片网站| 一区二区三区中文字幕电影| 精品人妻一区二区免费| 亚洲高清在线| 裸模一区二区三区免费| 免费高清视频在线一区| 视频直播国产精品| 国产黄色片免费| 黄网动漫久久久| 欧美成人国产精品一区二区| 日精品一区二区| 宅男在线精品国产免费观看| 精品国产乱码一区二区三区 | 亚洲高清在线观看| 国产精品100| 国产免费成人在线视频| 成人av毛片在线观看| 综合天堂av久久久久久久| 国产精选在线观看91| 性欧美videohd高精| www.午夜精品| 色婷婷av一区二区三| 91久久香蕉国产日韩欧美9色| 亚洲欧美卡通动漫| 高清不卡一区二区在线| 国产日韩一区二区在线| 91中文字幕精品永久在线| 成人区精品一区二区| 亚洲深夜视频| 蜜月aⅴ免费一区二区三区| 国产18精品乱码免费看| 在线观看亚洲精品视频| 欧美在线视频第一页| 99天天综合性| 污污网站在线观看视频| 在线视频观看日韩| 亚洲精品成人久久久998| 91精品国产自产精品男人的天堂 | 国产精品久久久久久久久久久久久久久久久 | 999国产精品| 精品一区二区日本| 亚洲青青一区| 欧美专区日韩视频| 永久免费网站在线| 中文字幕九色91在线| 狠狠躁日日躁夜夜躁av| 欧美亚洲国产一区二区三区va | 自拍欧美日韩| 热舞福利精品大尺度视频| 日韩精品三级| 国产精品入口日韩视频大尺度| 国产探花视频在线观看| 中文字幕一区二区三区电影| 无码国产伦一区二区三区视频| 欧美乱妇20p| 欧美黑人一区二区| 亚洲自拍偷拍麻豆| 91av手机在线| 国产亚洲欧美日韩日本| 精品熟女一区二区三区| 国产美女主播视频一区| 色综合天天色综合| 性xx色xx综合久久久xx| 国产高清不卡无码视频| 青青草国产成人a∨下载安卓| 国产在线视频欧美一区二区三区| 国产精品一站二站| 国产色综合天天综合网| 欧美香蕉视频| 青草热久免费精品视频 | 青青久久aⅴ北条麻妃| 蜜臀av在线| 欧美成人全部免费| 久久bbxx| 日韩中文字幕在线播放| av基地在线| 原创国产精品91| 电影在线一区| 中文国产亚洲喷潮| 最新97超碰在线| 在线免费看av不卡| 成人亚洲性情网站www在线观看| 精品中文视频在线| 亚洲aaaaaaa| 日韩电影网在线| 性xxxxbbbb| 日韩精品欧美激情| 三级视频网站在线| 亚洲欧美国产日韩天堂区| 青青久草在线| 亚洲欧美激情视频| 成年人在线免费观看| 中文字幕不卡在线视频极品| 国产一区电影| 最好看的2019的中文字幕视频| 国产福利在线| 中文字幕亚洲激情| 精品国产白色丝袜高跟鞋| 久久婷婷国产麻豆91天堂| aaa国产视频| 4438x亚洲最大成人网| 亚洲综合精品视频| 91精品黄色片免费大全| 亚洲第一精品网站| 日韩电影在线观看中文字幕 | 91小视频在线观看| 大地资源二中文在线影视观看| 91视频观看视频| 欧美黄色一级生活片| 国产精品卡一卡二| 亚洲欧美日韩偷拍| av成人免费在线观看| 少妇大叫太粗太大爽一区二区| 久久青草欧美一区二区三区| 99久久久无码国产精品衣服| 国产精品久久久久三级| 日韩视频中文字幕在线观看| 亚洲一区二区三区在线看| 日本一区二区网站| 91国产福利在线| 11024精品一区二区三区日韩| 日韩一区二区三区四区| 日韩一级片免费在线观看| 亚洲欧美日本另类| 成a人片在线观看| 97视频com| 福利精品一区| 国产传媒一区二区三区| 亚洲最好看的视频| 亚洲欧美福利一区二区| 五月天中文字幕在线| 国产成人免费视| 久久丫精品忘忧草西安产品| 18涩涩午夜精品.www| 久久久久久久黄色片| 欧美日韩久久一区二区| 刘亦菲久久免费一区二区| 国产一区二区三区在线看| av在线看片| 国产福利成人在线| 亚洲啊v在线免费视频| 欧美激情www| 欧美99久久| 亚洲精品乱码久久久久久自慰| 国产在线一区二区综合免费视频| 亚洲の无码国产の无码步美| 国产精品久久久久天堂| 91av在线免费视频| 日韩一区二区三区av| 国产黄在线观看免费观看不卡| 欧美国产日韩一区| 国产a亚洲精品| 精品无人乱码一区二区三区的优势| 国产精品久久观看| 久久精品.com| 成人性生交大片免费看中文| 免费91在线观看| 日韩欧美在线字幕| 成人毛片在线免费观看| 社区色欧美激情 | free欧美| 久久精品国产精品国产精品污| 久久久精品久久久久久96| 男女污污的视频| 久久一二三国产| 黄色一级片中国| 欧美色精品在线视频| 每日更新在线观看av| 性欧美暴力猛交69hd| 亚洲国产中文在线二区三区免| 一区二区视频在线免费| 日韩av中文在线观看| 香蕉网在线播放| 亚洲444eee在线观看| 高h放荡受浪受bl| 欧美激情女人20p| 9999在线精品视频| 色中文字幕在线观看| 免费高清在线一区| 男人的天堂官网| 日本韩国欧美一区二区三区| 偷拍自拍在线视频| 91成人免费观看网站| 噜噜噜天天躁狠狠躁夜夜精品| 欧美又粗又长又爽做受| 高清久久久久久| 天天操天天射天天爽| 亚洲国产精彩中文乱码av| sm在线观看| 九9re精品视频在线观看re6| 亚洲久久视频| 亚洲最大免费视频| 欧美三级xxx| 国产在线观看网站| 国产精品久久久久久超碰| 欧美色网址大全| 在线观看国产一级片| 日韩一区有码在线| 97在线视频人妻无码| 日韩视频一区在线观看| 成人高清免费在线| 91手机在线视频| 亚洲特级毛片| 久久久久国产精品区片区无码| 欧美日韩一区二区精品| 国产一二三区在线| 国产欧美日韩综合精品| 亚洲老妇激情| 亚洲最大视频网| 午夜伦理一区二区| 可以直接在线观看的av| 国产精品爽黄69天堂a| 欧美在线亚洲综合一区| 国产麻豆剧传媒精品国产| 午夜激情综合网| 成年人视频在线看| 91免费在线视频| 亚洲大胆视频| 级毛片内射视频| 884aa四虎影成人精品一区| 色在线视频网| 欧美 日韩 国产在线| 蓝色福利精品导航| 久久精品99久久久久久| 国产午夜精品理论片a级探花| jvid一区二区三区| 黄色一级片国产| 97久久精品人人做人人爽50路| 91麻豆精品在线| 欧美丰满少妇xxxxx| 最新亚洲精品| 深夜做爰性大片蜜桃| 欧美日韩国产一区二区三区| 91亚洲精选| 国产区日韩欧美| 蜜臀精品久久久久久蜜臀 | 成人精品久久| 稀缺小u女呦精品呦| 在线观看中文字幕不卡|