精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美白人最猛性xxxxx69交| 国产精品成人免费精品自在线观看| 久久久久久国产精品| 成人免费av片| 国产精品成人3p一区二区三区| 一区二区欧美精品| 欧美日韩国产三区| 国产欧美综合视频| 亚洲精品视频啊美女在线直播| 一个人www欧美| av不卡中文字幕| 免费在线观看一区| 亚洲综合免费观看高清在线观看| 欧美综合激情| 国产综合无码一区二区色蜜蜜| 久久综合激情| 久久免费成人精品视频| 亚洲不卡的av| 欧美重口另类| 欧美一区二区日韩| 99久久国产宗和精品1上映| 中文字幕在线播放网址| 2021久久国产精品不只是精品| 成人妇女免费播放久久久| 依依成人综合网| 欧美久色视频| 久久亚洲精品视频| 国产美女免费网站| 免费看久久久| 日韩欧美亚洲一区二区| 超碰影院在线观看| 嗯啊主人调教在线播放视频| 亚洲欧美日韩系列| 亚洲高清在线播放| 麻豆影视在线| 99re视频精品| 国产亚洲情侣一区二区无| 99热这里只有精品66| 理论片日本一区| 国产精品久久久久久中文字| 性无码专区无码| 国产乱码精品| 66m—66摸成人免费视频| 91aaa在线观看| 66久久国产| 北条麻妃一区二区三区中文字幕| 怡红院一区二区三区| 午夜精品福利影院| 亚洲国产精品高清久久久| 美女又黄又免费的视频| 久久久久久久久成人| 7777精品久久久大香线蕉| xxx国产在线观看| 成人国产精选| 欧美日韩中文国产| 蜜臀av免费观看| 欧美性理论片在线观看片免费| 欧美性猛交xxxx乱大交极品| 欧美a在线视频| 综合毛片免费视频| 色哟哟一区二区| 欧美精品第三页| 亚洲欧美在线成人| 在线国产电影不卡| 在线观看亚洲色图| 99精品在线免费观看| 日韩一卡二卡三卡| 性xxxxxxxxx| 久久精品色播| 亚洲女同性videos| 大胸美女被爆操| 手机在线电影一区| 欧美大尺度在线观看| 国产精品白嫩白嫩大学美女| 亚洲性视频h| 欧洲日韩成人av| 国产裸体美女永久免费无遮挡| 久久精品国产亚洲a| 亚洲va欧美va国产综合剧情| wwwav网站| 99久久综合国产精品| 欧美在线视频二区| 黄色网在线免费看| 午夜激情久久久| av片中文字幕| 疯狂欧洲av久久成人av电影 | 在线视频一区二区| 91制片厂在线| 亚洲国产黄色| 国产精品视频26uuu| 国产超碰人人模人人爽人人添| av在线这里只有精品| 亚洲国产精品视频一区| 婷婷色在线资源| 色综合激情五月| 亚洲一二三av| 亚洲丝袜美腿一区| 久久香蕉频线观| 国产日产精品一区二区三区| 久久99精品视频| 国产欧美一区二区三区不卡高清| av色图一区| 午夜国产精品一区| 欧美精品 - 色网| 伊人春色之综合网| 欧美成人精品在线播放| 无码人妻一区二区三区免费| 国产不卡在线视频| 欧洲一区二区在线观看| 日韩专区av| 欧美日韩aaaaaa| 久久国产精品无码一级毛片| 中文字幕日韩一区二区不卡| 国产97色在线| 神马久久久久久久久久| 成人欧美一区二区三区1314| www.爱色av.com| 97品白浆高清久久久久久| 在线视频欧美日韩精品| 91精品国产乱码在线观看| 精品一区二区三区日韩| 日产精品久久久一区二区| 成年人国产在线观看| 欧美人xxxx| 人人爽人人爽人人片| 国产日本精品| 国产a一区二区| av激情在线| 欧美喷潮久久久xxxxx| 手机免费看av| 国产精品日本| 国产欧美一区二区视频| 曰本三级在线| 777久久久精品| 日韩av网站在线播放| 免费国产自线拍一欧美视频| 国产欧美日韩在线播放| av电影免费在线看| 精品久久人人做人人爽| 欧美黑吊大战白妞| 国产一区不卡视频| 中文字幕中文字幕99| 91福利精品在线观看| 亚洲午夜女主播在线直播| 欧美国产成人精品一区二区三区| www.色精品| 日韩精品―中文字幕| 理论片一区二区在线| 91国产在线精品| 亚洲人视频在线观看| 天天av天天翘天天综合网| 国产xxxxxxxxx| 国产欧美日韩亚洲一区二区三区| 精品国产乱码久久久久久88av| 春色校园综合激情亚洲| 亚洲成人激情在线| 日韩在线视频免费播放| 91老师片黄在线观看| 97在线播放视频| 九色精品91| 国产91在线播放精品91| 在线免费av电影| 91精品国产福利在线观看| 极品颜值美女露脸啪啪| 成人午夜电影久久影院| 老太脱裤让老头玩ⅹxxxx| 欧美精品国产白浆久久久久| 日韩免费中文字幕| 成人免费黄色网页| 7878成人国产在线观看| 国产一级免费观看| 91玉足脚交白嫩脚丫在线播放| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 精品久久久久久久久久久下田| 国产精品美女免费视频| 国产欧美久久久久久久久| 精品国产一区二区精华| 中文字幕激情小说| 国产精品久久精品日日| 野花视频免费在线观看| 欧美一级网站| 四虎4hu永久免费入口| 激情av综合| 国产精品都在这里| 免费黄色在线| 亚洲激情中文字幕| 性色av一区二区三区四区| 亚洲欧美一区二区三区国产精品| 日本少妇xxxx| 久久精品国产精品亚洲红杏| 欧美中日韩在线| 欧美日韩国产一区二区三区不卡| 91成人伦理在线电影| 日韩欧美看国产| 欧美日韩不卡合集视频| 欧美白人做受xxxx视频| 欧美一区二区三区不卡| 波多野结衣一二区| 一区二区三区美女| 日本一道本视频| 成人丝袜高跟foot| 伊人国产在线视频| 99精品国产在热久久下载| 色爱区成人综合网| 激情视频极品美女日韩| 亚洲精品欧美日韩| 成人激情综合| 国产做受69高潮| 成人免费在线| 中文字幕av一区| 无码国产精品96久久久久| 正在播放一区二区| 国内av在线播放| 精品国产福利视频| 久久精品一区二区三| 国产精品天天看| 国产ts丝袜人妖系列视频| 国产精品亚洲综合一区在线观看| 天天干天天干天天干天天干天天干| 99精品热6080yy久久| 日本一级淫片演员| 日韩理论电影大全| 免费在线成人av电影| av综合网页| 99国产在线| 最新亚洲国产| 国产主播精品在线| 欧美爱爱视频| 国产精品美女无圣光视频| 天堂8中文在线最新版在线| 久久久久久久久国产| 污污的视频在线观看| 久久精品亚洲国产| av中文字幕在线| 在线日韩中文字幕| 国产精品免费播放| 亚洲欧洲一区二区三区久久| 四虎影院在线播放| 亚洲精品一区二区三区婷婷月| 色婷婷视频在线| 精品国产1区二区| 成人无码一区二区三区| 亚洲白虎美女被爆操| 黄色aaa毛片| 亚洲精品二三区| 香蕉国产在线视频| 亚洲精品狠狠操| 亚洲三级黄色片| 日韩精品视频免费| 色视频在线看| 亚洲性夜色噜噜噜7777| 国产福利在线视频| 国产一区二区三区在线| 成年网站在线| 播播国产欧美激情| wwwav在线| 欧美激情2020午夜免费观看| 超免费在线视频| 81精品国产乱码久久久久久| 厕沟全景美女厕沟精品| 国产精品91一区| 日韩一级视频| 97免费资源站| 欧美成人基地| 日韩高清国产精品| 手机亚洲手机国产手机日韩| 亚洲天堂第一区| 日韩视频免费| 天天干天天操天天玩| 国产在线视视频有精品| 成人免费看片载| 久久久久88色偷偷免费| 人妻无码一区二区三区免费| 亚洲激情男女视频| 成人午夜视频精品一区| 欧美性色黄大片手机版| 国产毛片毛片毛片毛片| 亚洲成人av在线| av在线播放网| 久久久久国产精品免费网站| 亚洲精品动漫| 成人午夜黄色影院| 亚洲成在人线免费观看| 亚洲视频导航| 狠久久av成人天堂| 97公开免费视频| 国产精品123| 91精品人妻一区二区| 亚洲视频一区在线| 欧美三级午夜理伦| 欧美精三区欧美精三区| 欧美一区,二区| 色噜噜狠狠狠综合曰曰曰| 国产精品国精产品一二| 国产精品欧美久久久| 女同一区二区三区| 中日韩在线视频| 性伦欧美刺激片在线观看| 日韩视频在线观看一区二区三区| 91蜜桃在线观看| 福利所第一导航| 欧美日韩一卡二卡三卡| 天堂国产一区二区三区| xxxx性欧美| 日本不卡网站| 97中文在线| 日本大胆欧美| 欧洲黄色一级视频| 国产成人在线网站| 激情五月深爱五月| 欧美日韩激情视频8区| 国产高潮流白浆喷水视频| 在线观看久久av| 97se综合| 国产日韩精品推荐| 影音先锋日韩在线| av污在线观看| 久久美女高清视频| 日韩女同强女同hd| 日韩视频免费观看高清完整版 | 国产亚洲综合在线| 日本三级黄色大片| 欧美一级免费观看| av网站大全在线观看| 国产99久久久欧美黑人 | 日韩.欧美.亚洲| 亚洲综合国产激情另类一区| 亚洲妇女无套内射精| 亚洲视频一区在线| 一区二区日韩在线观看| 一区二区三区视频观看| 在线观看v片| 久久久精品国产一区二区三区| 黑丝一区二区| 91精品国产高清91久久久久久| 亚洲乱码国产乱码精品精可以看 | 一二三四视频在线中文| www.成人av.com| 欧美日韩国产亚洲一区| 天天操精品视频| 亚洲欧美偷拍三级| 99久久精品国产一区二区成人| 久久成人精品一区二区三区| 99er精品视频| 日本老太婆做爰视频| 国产成人精品一区二区三区网站观看| 看片网站在线观看| 精品国产乱码91久久久久久网站| 欧美日韩色网| 国产精品一区二区三区精品| 亚洲精品1区2区| 亚洲黄色在线网站| 福利一区视频在线观看| 男同在线观看| 国产精品久久久久久久久久尿 | 国产精品毛片无码| 女人床在线观看| av不卡在线播放| 国产又黄又猛又粗又爽| 一本一道久久a久久精品逆3p | 国产精品麻豆免费版| 在线综合亚洲| 免费看污片的网站| 欧美日韩亚洲高清一区二区| 国产在线激情| 国产精品免费观看高清| 亚洲一区二区三区高清| 国产在线综合视频| 欧美老年两性高潮| 欧美大胆的人体xxxx| 久久免费视频1| 久久精品国产亚洲aⅴ| 九九免费精品视频| 日韩精品视频在线观看网址| 国产精品.xx视频.xxtv| 亚洲区成人777777精品| 99精品热视频| 亚洲在线视频播放| 欧美日韩福利电影| 九九久久成人| 91亚洲一区二区| 狠狠久久五月精品中文字幕| av在线电影网| 国产精品一区视频| 热久久久久久久| 国产在线视频在线观看| 亚洲欧洲激情在线| 麻豆视频久久| 99蜜桃臀久久久欧美精品网站| 自拍偷自拍亚洲精品播放| 亚洲欧洲成人在线| 成人有码在线播放| 久久久久国产精品午夜一区| 麻豆网址在线观看| 国产午夜精品久久久| 91成人精品观看| 免费大片在线观看| 亚洲尤物在线视频观看| 成a人片在线观看www视频| 国产乱码精品一区二区三区不卡|