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

C++程序員必須要懂的:左值引用、右值引用、完美轉發!長文慎入,建議收藏!

開發
若直接傳遞 arg(即 return Widget(arg);),則無論原始參數是左值還是右值,arg 都會被視為左值。

一、左值引用:從基礎到高級應用

1. 左值的本質與引用語義

左值(Lvalue)是具名對象(Named Object),具有明確的內存地址和生命周期。左值引用(T&)本質上是變量的"別名",其核心價值在于:

  • 避免拷貝:函數參數傳遞時直接操作原對象
  • 實現鏈式調用:返回左值引用支持連續操作
  • 多態性支持:基類引用綁定派生類對象

2. const 左值引用的特殊規則

const T&的獨特之處在于可綁定右值,這一特性被廣泛用于:

  • 接受字面量或臨時對象作為參數
  • 延長臨時對象的生命周期
void process(const std::string& s); 

process("hello");  // 合法,構造臨時string對象

3. 左值引用的底層實現

從匯編角度看,引用本質是自動解引用的指針。以下代碼:

int x = 10;
int& rx = x;
rx = 20;

編譯后的關鍵指令: (VS2022)

6: int main()
     7: {
00007FF79BEB18A0 40 55                push        rbp  
00007FF79BEB18A2 57                   push        rdi  
00007FF79BEB18A3 48 81 EC 28 01 00 00 sub         rsp,128h  
00007FF79BEB18AA 48 8D 6C 24 20       lea         rbp,[rsp+20h]  
00007FF79BEB18AF 48 8D 7C 24 20       lea         rdi,[rsp+20h]  
00007FF79BEB18B4 B9 12 00 00 00       mov         ecx,12h  
00007FF79BEB18B9 B8 CC CC CC CC       mov         eax,0CCCCCCCCh  
00007FF79BEB18BE F3 AB                rep stos    dword ptr [rdi]  
00007FF79BEB18C0 48 8B 05 39 A7 00 00 mov         rax,qword ptr [__security_cookie (07FF79BEBC000h)]  
00007FF79BEB18C7 48 33 C5             xor         rax,rbp  
00007FF79BEB18CA 48 89 85 F8 00 00 00 mov         qword ptr [rbp+0F8h],rax  
00007FF79BEB18D1 48 8D 0D 93 F7 00 00 lea         rcx,[__10633CA5_0904@cpp (07FF79BEC106Bh)]  
00007FF79BEB18D8 E8 7F FA FF FF       call        __CheckForDebuggerJustMyCode (07FF79BEB135Ch)  
     8: 
     9:         int x = 10;
00007FF79BEB18DD C7 45 04 0A 00 00 00 mov         dword ptr [x],0Ah   // 將10(0x0A)存入變量x的內存位置(4字節)
    10:         int& rx = x;
00007FF79BEB18E4 48 8D 45 04          lea         rax,[x]   //計算x的內存地址,存入rax寄存器
00007FF79BEB18E8 48 89 45 28          mov         qword ptr [rx],rax  //將rax的值(x的地址)存入引用rx的內存位置
    11:         rx = 20;
00007FF79BEB18EC 48 8B 45 28          mov         rax,qword ptr [rx]  //從rx中讀取x的地址到rax
00007FF79BEB18F0 C7 00 14 00 00 00    mov         dword ptr [rax],14h  //將20(0x14)寫入rax指向的內存(即x)
    12: 
    13:         return 0 ;
00007FF79BEB18F6 33 C0                xor         eax,eax  
    14: }

這里有個小知識:dword ptr 和 qword ptr。

每個 word 是 16 位,所以 DWORD 就是雙字,即 32 位。QWORD 則是四個字,也就是 64 位。因此,dword ptr 用于 32 位操作,qword ptr 用于 64 位操作。

4. 引用與指針的對比分析

特性

引用

指針

空值

不允許

允許

重綁定

不可

可以

內存占用

通常優化掉

固定大小

安全性

更高

較低

二、右值引用:移動語義的革命

1. 右值的分類與特性

C++11 將右值細分為:

  • 純右值(prvalue):字面量、表達式結果
  • 將亡值(xvalue):即將被移動的對象
int&& r1 = 5;         // prvalue
std::move(a);         // 將左值轉為將亡值

int func() { return 5; }
func();                 // 返回非引用的函數調用是純右值

2. 移動語義的底層實現

移動構造函數示例:

Buffer(Buffer&& other) noexcept 
    : data_(nullptr), size_(0) {  // 初始化為空狀態
    if (this != &other) {
        data_ = other.data_;
        size_ = other.size_;
        other.data_ = nullptr;
        other.size_ = 0;
    }
}

對比拷貝構造函數:

Buffer(const Buffer& other) 
    : data_(new char[other.size_]), size_(other.size_) {
    std::memcpy(data_, other.data_, size_);
}

3. 移動語義的性能優勢

通過std::vector的插入操作對比:

// 拷貝語義版本
std::vector<BigObject> vec;
BigObject obj;
vec.push_back(obj);  // 深拷貝發生

// 移動語義版本
vec.push_back(std::move(obj)); // 僅指針交換

性能測試顯示,對于包含 1MB 數據的對象,移動操作比拷貝快 1000 倍以上。

4. 移動安全與異常處理

  • 使用noexcept聲明移動操作
  • 在移動后將被移對象置為有效狀態
class Resource {
public:
    Resource(Resource&& other) noexcept 
        : handle_(other.handle_) {
        other.handle_ = nullptr; // 確保安全
    }
    
private:
    void* handle_;
};

三、完美轉發:模板編程的藝術

1. 轉發失敗的經典案例

考慮轉發函數:

template<typename T>
void bad_forward(T arg) {
    target(arg);  // 丟失值類別信息
}

當傳入右值時,arg變為左值,導致無法調用移動語義。

2. 萬能引用

模板參數推導規則:

template<typename T>
void func(T&& param);  // T&&可能是左值或右值引用

int x = 10;
func(x);   // T推導為int&,折疊為int&
func(10);  // T推導為int,最終類型int&&

3. 引用折疊規則全解析

類型推導時的折疊規則:

聲明的類型

實際類型

折疊結果

T& &

左值引用

T&

T& &&

左值引用

T&

T&& &

左值引用

T&

T&& &&

右值引用

T&&

4. std::forward 的魔法實現

標準庫實現的核心邏輯:

template<typename T>
T&& forward(typename std::remove_reference<T>::type& arg) {
    return static_cast<T&&>(arg);
}

當T為左值引用時,static_cast轉換為左值引用;否則轉換為右值引用。

這里怎么理解呢? 代碼中是怎么做到的? remove_reference 又是什么意思?

(1) 第一:std::remove_reference的作用

①  基礎定義

std::remove_reference是類型特征(type trait),去除類型 T 的所有引用修飾符(無論 T 是 T& 還是 T&&)。

如果 T = int& → std::remove_reference<T>::type 為 int
如果 T = int&& → std::remove_reference<T>::type 為 int
如果 T = int → std::remove_reference<T>::type 為 int

它會將int&或int&&都轉換為int。

② 在forward中的應用

觀察函數參數聲明:

typename std::remove_reference<T>::type& arg

typename std::remove_reference::type& 的含義:

將去除了引用后的類型 重新添加左值引用,最終得到的是一個 左值引用類型,但引用的底層類型是原始的非引用類型。(非引用類型的左值引用 )

類型推導過程:

原始類型

std::remove_reference::type

最終類型

int

int

int&

int&

int

int&

int&&

int

int&

const int&

const int

const int&

這里的arg被強制聲明為非引用類型的左值引用。例如:

  • 若T = int&,則arg類型為int& → remove_reference得到int → arg是int&
  • 若T = int&&,則arg類型為int&& → remove_reference得到int → arg仍是int&

這樣設計是為了保證:

  • 參數始終是左值引用(避免函數參數類型出現右值引用)
  • 剝離原有引用,為后續的引用折疊做準備

(2) 第二:static_cast的魔法

① 引用折疊規則

C++的引用折疊規則是理解這個轉換的關鍵:

模板參數 T 的原始類型

T&&

int&

int& &&

int&&

int&& &&

int

int&&

② 實際轉換過程

我們分情況看下:

情況 1:當 T 是左值引用(如int&)

// 假設調用:forward<int&>(x)
T = int&
static_cast<T&&> → static_cast<int& &&> → static_cast<int&>

結果返回左值引用。

情況 2:當 T 是右值引用(如int&&)

// 假設調用:forward<int&&>(x)
T = int&&
static_cast<T&&> → static_cast<int&& &&> → static_cast<int&&>

結果返回右值引用。

情況 3:當 T 是非引用(如int)

// 假設調用:forward<int>(x)
T = int
static_cast<T&&> → static_cast<int&&>

結果返回右值引用。

(3) 第三:完整推導過程示例

① 左值轉發場景

int x = 10;
forward<int&>(x);

// 模板實例化:
int& && forward(int& arg) {
    return static_cast<int&>(arg); 
}
// 折疊后:
int& forward(int& arg) { return arg; }

② 右值轉發場景

forward<int&&>(std::move(x));

// 模板實例化:
int&& && forward(int& arg) {
    return static_cast<int&&>(arg);
}
// 折疊后:
int&& forward(int& arg) { return static_cast<int&&>(arg); }

(4) 第四:為什么要這樣設計?

① 保持值類別

參數arg在函數內部始終是左值(因為函數參數都是左值)。通過static_cast:

  • 當原始參數是左值時,返回左值引用
  • 當原始參數是右值時,返回右值引用

② 完美轉發的必要性

沒有std::forward時:

template<typename T>
void wrapper(T&& arg) {
    target(arg);  // arg總是左值
}

即使傳入右值,arg在函數內部也是左值,導致無法觸發移動語義。

使用std::forward后:

template<typename T>
void wrapper(T&& arg) {
    target(std::forward<T>(arg)); 
}

可以保持原始參數的值類別(左值/右值)。

要素

作用

remove_reference

保證函數參數類型為基本類型的左值引用,剝離原有引用信息

T&&

根據模板參數 T 的原始類型,通過引用折疊決定最終返回類型

static_cast

執行有條件的類型轉換:T 含左值信息則返回左值,否則返回右值

函數參數設計為左值

避免函數簽名中出現右值引用參數,符合 C++函數參數傳遞規則

通過這種精妙的設計,std::forward能夠:

  • 根據模板參數T攜帶的類型信息
  • 智能判斷應該返回左值還是右值引用
  • 在編譯期完成所有類型轉換
  • 實現真正的完美轉發

這正是 C++模板元編程和類型系統的精華所在,也是現代 C++高效資源管理的基礎。

③ 完美轉發的實戰應用

工廠函數實現:

template<typename T, typename... Args>
T create(Args&&... args) {
    return T(std::forward<Args>(args)...);
}

// 使用示例
auto p = create<std::unique_ptr<int>>(new int(5));

四、完美轉發使用示例

以下是一個使用 std::forward 的示例,演示如何在模板函數中實現參數的完美轉發,保留原始值類別(左值/右值):

#include <iostream>
#include <string>
#include <utility>

// 示例類:記錄構造方式
classWidget {
public:
    // 拷貝構造(左值)
    Widget(const std::string& s) : data(s) {
        std::cout << "拷貝構造: " << data << std::endl;
    }

    // 移動構造(右值)
    Widget(std::string&& s) : data(std::move(s)) {
        std::cout << "移動構造: " << data << std::endl;
    }

private:
    std::string data;
};

// 工廠函數:完美轉發參數到 Widget 的構造函數
template<typename T>
Widget createWidget(T&& arg){
    // 使用 std::forward 保留 arg 的原始值類別(左值/右值)
    returnWidget(std::forward<T>(arg));
}

intmain(){
    std::string str = "Hello";

    // 傳遞左值 → 調用拷貝構造
    Widget w1 = createWidget(str);
    
    // 傳遞右值(臨時對象)→ 調用移動構造
    Widget w2 = createWidget(std::string("World"));
    
    // 傳遞字符串字面量 → 直接構造為右值(無需拷貝)
    Widget w3 = createWidget("C++11");

    return0;
}

輸出結果:

拷貝構造: Hello
移動構造: World
移動構造: C++11

1. 關鍵解釋

std::forward(arg):

  • 當 arg 是左值時,std::forward 返回左值引用,觸發 Widget 的拷貝構造函數。
  • 當 arg 是右值時,std::forward 返回右值引用,觸發 Widget 的移動構造函數。

模板參數 T&&:

  • 這是"萬能引用",可以綁定到左值或右值。
  • 配合 std::forward 實現參數類型的完美轉發。

2. 對比:如果不使用 std::forward

若直接傳遞 arg(即 return Widget(arg);),則無論原始參數是左值還是右值,arg 都會被視為左值,導致:

  • 所有情況調用拷貝構造(性能損失)。
  • 無法利用移動語義優化。

責任編輯:趙寧寧 來源: CppPlayer
相關推薦

2020-08-11 11:00:16

左值引用右值引用移動語義

2012-02-13 10:18:42

C++ 11

2022-07-26 00:36:06

C#C++函數

2022-02-16 12:52:22

C++項目編譯器

2025-06-06 07:35:06

C++表達式右值

2009-11-12 09:37:14

Visual Stud

2024-03-05 09:55:00

C++右值引用開發

2023-07-17 10:28:00

C/C++編程接口

2025-02-07 09:58:43

C++11Lvalue對象

2010-02-03 17:32:54

C++左值與右值

2025-09-26 07:27:39

2025-03-10 08:30:00

2011-05-24 17:20:57

程序員

2020-08-05 07:53:53

程序員網站技術

2012-11-08 09:49:30

C++Java程序員

2024-05-21 13:41:17

2023-02-13 23:43:06

程序員網站

2023-11-29 09:47:11

C++對象

2022-09-30 08:16:38

令牌客戶端隱藏式

2011-03-30 17:20:18

C++引用
點贊
收藏

51CTO技術棧公眾號

夜夜骚av一区二区三区| 日韩精品xxx| av女优在线| 国产精品一区一区| 韩日欧美一区二区| 91香蕉国产视频| 99久久婷婷国产综合精品青牛牛 | 精品国产乱码久久久久久免费| 极品美女扒开粉嫩小泬| 最新国产在线观看| 9久草视频在线视频精品| 国产精品日韩专区| 日韩少妇裸体做爰视频| 97精品国产一区二区三区| 精品久久久久久无| 成人性生交免费看| 日本不良网站在线观看| 18欧美乱大交hd1984| 久久99精品久久久久久三级| 国产精品系列视频| 人妻 日韩精品 中文字幕| a在线视频v视频| 国产精品免费视频观看| 韩国成人一区| 99国产在线播放| 奇米影视一区二区三区小说| 久久男人的天堂| 91狠狠综合久久久| 国产区精品区| 亚洲精品一区二区久| 亚洲精品国产成人av在线| 精品国产三级| 56国语精品自产拍在线观看| 玩弄japan白嫩少妇hd| 成人观看网址| 亚洲国产另类精品专区| 国产盗摄视频在线观看| 91在线播放网站| 国产欧美综合在线| 日本电影一区二区三区| 涩爱av在线播放一区二区| 成人三级在线视频| 99热在线播放| 性生活视频软件| 国产成人亚洲综合a∨婷婷图片 | 精品久久久久久久久久久| 国产精品一区=区| 久久精品视频2| 久久精品三级| 国产成人精品在线| 中文字幕在线观看视频免费| 久久婷婷影院| 日本视频久久久| 手机av免费观看| 日韩av一级电影| 国产精品久久久久久av下载红粉| 手机在线看片1024| 日韩av网站在线观看| 国产精品久久久久99| 自拍偷拍福利视频| 久久99精品国产麻豆婷婷洗澡| 国产精品久久久久久久天堂| 波多野结衣在线电影| 蜜桃久久精品一区二区| 国产精选久久久久久| 91av久久久| 国产成+人+日韩+欧美+亚洲| 国产精品国产精品国产专区蜜臀ah| 免费观看毛片网站| 2020国产精品自拍| 亚洲福利av| 成人免费高清| 五月天欧美精品| 欧美国产日韩在线播放| 日韩精品一页| 日韩欧美国产一区二区三区| 波多野结衣先锋影音| 国产一区二区电影在线观看| 日韩中文字幕久久| 黄色激情视频在线观看| 久久先锋资源| 成人h猎奇视频网站| 精品女同一区二区三区| 91在线视频观看| 污视频在线免费观看一区二区三区 | 亚洲国产小视频在线观看| 亚洲做受高潮无遮挡| 色呦哟—国产精品| 久久久久久美女| 青青国产在线视频| 国产成人精品aa毛片| 开心色怡人综合网站| 麻豆视频在线观看免费| 亚洲成人免费影院| 天天干天天干天天干天天干天天干| 成人久久精品| 亚洲欧美综合另类中字| 强乱中文字幕av一区乱码| 新67194成人永久网站| 成人黄色大片在线免费观看| 手机在线精品视频| 国产精品第13页| www黄色日本| 亚洲高清999| 国产亚洲精品美女久久久| 国产性xxxx| 日韩精品电影一区亚洲| 国产精华一区| 国产在线激情| 日韩欧美在线中文字幕| 日本久久久久久久久久| 日韩美女一区二区三区在线观看| 欧美激情按摩在线| 国产精品探花视频| 欧美国产日本韩| 久久久久久久激情| 福利在线一区| 欧美丰满老妇厨房牲生活 | 精品免费日韩av| 天堂网中文在线观看| 久久精品成人| 精品日产一区2区三区黄免费 | 最新国产精品久久久| 国产精品高精视频免费| 亚洲色欧美另类| 亚洲一区二区在线免费观看视频| 中文字幕 欧美日韩| 国产va免费精品观看精品视频| 久久久久亚洲精品| 精品美女www爽爽爽视频| 最新日韩av在线| 午夜免费福利视频在线观看| 欧美午夜精品一区二区三区电影| 欧美亚洲视频在线观看| 五月天婷婷在线观看| 亚洲一区免费观看| 成人做爰www看视频软件| 欧美二区不卡| 2019国产精品视频| av网址在线| 91精品国产福利| 永久免费看mv网站入口| 久久99国产精品久久99果冻传媒| 午夜精品福利一区二区| jizz免费一区二区三区| 中文字幕精品久久| 国产精品成人无码| 国产精品免费视频网站| 五月天丁香花婷婷| 午夜日韩在线| 国产精品一区视频| 九色porny丨国产首页在线| 日韩国产在线播放| 丁香六月婷婷综合| 久久久久久影视| 国产一级不卡毛片| 第四色成人网| 成人国内精品久久久久一区| 91精品久久| 亚洲成人久久网| 免费av网站在线| 国产精品欧美一区二区三区| 久久久久xxxx| 亚洲韩日在线| 日本亚洲导航| 国产精品一区二区美女视频免费看| 欧美成人精品激情在线观看 | 美女av一区二区三区| 成人福利小视频| 精品久久久中文| 国产精品av久久久久久无| 久久超碰97中文字幕| 少妇高潮大叫好爽喷水| 狼人天天伊人久久| 国产脚交av在线一区二区| 日本不卡不卡| 欧美精品一区在线观看| 婷婷激情五月综合| 一色屋精品亚洲香蕉网站| 一级黄色免费视频| 日韩不卡手机在线v区| 色乱码一区二区三区熟女| 国内精品偷拍| 国产精品香蕉在线观看| 日韩伦理电影网站| 亚洲人成网在线播放| aaa国产视频| 色综合天天综合| 中文字幕手机在线观看| 久久蜜臀中文字幕| 亚洲国产午夜精品| 久久综合影音| 成年人视频网站免费| 国产探花一区| 国产精品视频免费一区| 久久av日韩| 午夜欧美大片免费观看| 九七久久人人| 国产亚洲综合久久| 理论片中文字幕| 欧美日韩一区二区三区免费看| 韩国av免费观看| 国产精品成人免费| 北岛玲一区二区| 国产精品亚洲一区二区三区在线| 午夜欧美福利视频| 亚洲欧洲日本mm| www.黄色网址.com| 日韩欧美1区| 免费观看国产成人| 国产精品久av福利在线观看| 91日本在线视频| 亚洲四虎影院| 日韩免费观看网站| 忘忧草在线日韩www影院| 超在线视频97| 在线观看av的网站| 亚洲男人的天堂在线播放| 亚洲第一成人av| 91精品婷婷国产综合久久性色| 中文字幕xxxx| 欧美午夜精品久久久久久浪潮| 麻豆视频在线观看| 亚洲免费在线播放| 久久精品亚洲a| 亚洲国产精品二十页| 麻豆精品免费视频| 91免费精品国自产拍在线不卡| 老熟女高潮一区二区三区| 久久精品国产免费看久久精品| 在线视频日韩一区| 久久国产高清| 中文字幕乱码人妻综合二区三区| 亚洲成色精品| 日韩xxxx视频| 亚洲毛片在线| 你懂的av在线| 国产欧美一区二区色老头 | 91视频免费在线看| 亚洲欧美日韩国产手机在线| 免费成人美女女在线观看| 国产精品免费视频观看| 日本黄区免费视频观看| 中文字幕亚洲区| 日韩va亚洲va欧美va清高| 亚洲欧洲一区二区在线播放| 大地资源高清在线视频观看| 中文字幕亚洲一区二区av在线| 欧美性生交大片| 日韩美女精品在线| 美女的奶胸大爽爽大片| 一区二区成人在线| 亚洲精品视频在线观看免费视频| 午夜视频在线观看一区二区| 免费黄色网址在线| 日本高清不卡视频| 在线免费观看一区二区| 在线综合视频播放| 六月婷婷综合网| 亚洲黄色www| 国产小视频免费在线网址| zzjj国产精品一区二区| 中文字幕在线播放网址| 97精品视频在线播放| 成人欧美大片| 国产九九精品视频| 日韩一区二区三区色| 国产欧美日韩一区二区三区| 你微笑时很美电视剧整集高清不卡 | 亚洲欧美激情另类| 亚洲精品久久久久中文字幕二区 | 久久久久久蜜桃一区二区| 狠狠v欧美v日韩v亚洲ⅴ| 2025中文字幕| 国产亚洲欧美日韩日本| 五月天婷婷色综合| 欧美日韩美女在线| 中文字幕av免费观看| 欧美不卡在线视频| 嫩草精品影院| 欧美成人免费va影院高清| 欧美男人天堂| 成人做爽爽免费视频| 国产一区二区三区亚洲| 色综合久久久久久久久五月| 欧美日韩一区二区高清| 国产精品wwwww| 国产在线视频第一页| 国产欧美日韩在线观看| 99久久99久久精品国产| 岛国av一区二区在线在线观看| 中文字幕免费观看视频| 欧美成人bangbros| 最新国产在线观看| 91超碰中文字幕久久精品| 日本久久二区| 久久久久久一区| 欧美+亚洲+精品+三区| 久久精品网站视频| 成人免费视频国产在线观看| 国产视频123区| 婷婷国产v国产偷v亚洲高清| 中文字幕久久久久| 亚洲国产免费av| а√天堂8资源在线官网| 国产成人拍精品视频午夜网站 | 黄色国产精品一区二区三区| 久久高清精品| 无码人妻丰满熟妇区五十路百度| 国产福利一区二区三区视频在线| 手机毛片在线观看| 欧美性猛交xxxx乱大交3| 天天干天天干天天| 亚洲国产精品高清久久久| 九七久久人人| 国产精品va在线播放| 欧美亚洲tv| 美女扒开大腿让男人桶| 国产一区在线精品| 奇米网一区二区| 91福利在线导航| 欧美挠脚心网站| 91av视频在线| 红杏视频成人| 国产精品入口芒果| 国产电影精品久久禁18| 黄视频网站免费看| 欧美人伦禁忌dvd放荡欲情| 成人在线视频成人| 国产精品国产福利国产秒拍| 亚洲欧洲美洲国产香蕉| 奇米影视亚洲色图| 丁香桃色午夜亚洲一区二区三区| 欧美三级小视频| 日韩亚洲国产中文字幕欧美| 国产视频中文字幕在线观看| 成人黄色av网| 在线精品国产| 午夜免费福利网站| 亚洲欧美日韩国产综合| 国产精品一区二区人人爽| 超碰91人人草人人干| 精品久久亚洲| 97碰在线视频| av一区二区三区在线| 奇米影视第四色777| 日韩av一区二区在线| 在线天堂资源| 新呦u视频一区二区| 美女看a上一区| 操她视频在线观看| 欧美一区二区三区日韩| 麻豆福利在线观看| 黄色99视频| 日韩一区精品视频| 91久久久久久久久久久久久久 | 操人视频免费看| 亚洲最大色网站| 天天躁日日躁狠狠躁喷水| 91精品91久久久久久| 欧美人与物videos另类xxxxx| 欧美精品aaaa| 亚洲欧洲日韩在线| 亚洲精品福利网站| 欧美亚洲视频一区二区| 欧美一级精品| 男女视频在线观看网站| 亚洲国产精品一区二区久久恐怖片 | 99精品视频99| 在线视频一区二区| 国产一区二区三区亚洲综合| 国产一二三区在线播放| 久久亚洲综合色| 在线观看国产小视频| 欧美丰满老妇厨房牲生活 | 99久re热视频精品98| 成人午夜私人影院| 国产91精品一区| 久久韩剧网电视剧| 精品按摩偷拍| 色国产在线视频| 亚洲高清一区二区三区| 成人影视在线播放| 97超碰人人模人人爽人人看| 亚洲作爱视频| 久久爱一区二区| 日韩精品视频免费在线观看| 日本黄色成人| 欧美日韩亚洲第一| 亚洲精品亚洲人成人网在线播放| 色av男人的天堂免费在线| 成人字幕网zmw| 久久人人精品| 国产午夜精品无码| 爽爽爽爽爽爽爽成人免费观看| 国产区精品视频在线观看豆花| 亚洲精品午夜在线观看| 欧美日韩一区二区精品| 最新av在线播放| 色综合666|