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

C++ 模板特化:90% 程序員面試必掛的知識點(diǎn),你敢試試嗎?

開發(fā)
說實(shí)話,我見過太多這樣的程序員了:STL用得很溜,各種容器信手拈來,但一涉及到模板的底層原理,立馬就露餡了。

前段時間面試了一個工作3年的C++開發(fā),簡歷上寫著"熟悉C++模板編程"。我隨口問了一句:"全特化和偏特化有什么區(qū)別?"

他愣了5秒鐘,然后說:"這個...嗯...就是一個特化程度不同吧?"

我又問:"那你能寫個例子嗎?"

他開始想..,最后說:"不好意思,平時項(xiàng)目中用得少..."

說實(shí)話,我見過太多這樣的程序員了。STL用得很溜,各種容器信手拈來,但一涉及到模板的底層原理,立馬就露餡了。

今天就徹底給你講清楚這個問題,保證你看完就能吊打90%的C++程序員。

先說結(jié)論:一句話搞懂區(qū)別

全特化:完全指定所有模板參數(shù)偏特化:只指定部分模板參數(shù)或者對參數(shù)類型做限制

聽起來很簡單對吧?但魔鬼在細(xì)節(jié)里。

從最簡單的例子開始

我們從一個所有人都能看懂的模板開始:

template<typename T>
class MyClass {
public:
    void show() {
        std::cout << "普通模板" << std::endl;
    }
};

這就是一個最基礎(chǔ)的類模板?,F(xiàn)在問題來了:如果我想讓MyClass<int>有特殊的行為,怎么辦?

全特化:給特定類型開小灶

// 全特化:專門為int類型定制
template<>
class MyClass<int> {
public:
    void show() {
        std::cout << "這是int的專屬版本" << std::endl;
    }
};

注意看關(guān)鍵點(diǎn):

  • template<> 后面是空的
  • MyClass<int> 完全指定了類型

測試一下:

MyClass<double> obj1;  // 使用普通模板
MyClass<int> obj2;     // 使用全特化版本

obj1.show();  // 輸出:普通模板
obj2.show();  // 輸出:這是int的專屬版本

這就是全特化:針對特定的類型組合,提供完全不同的實(shí)現(xiàn)。

偏特化:更靈活的定制方案

全特化雖然好用,但有個問題:太死板了。如果我想讓所有指針類型都有特殊行為呢?難道要為每個指針類型都寫一個全特化?

這時候偏特化就派上用場了:

// 偏特化:專門處理指針類型
template<typename T>
class MyClass<T*> {
public:
    void show() {
        std::cout << "這是指針類型的版本" << std::endl;
    }
};

看到區(qū)別了嗎?

  • template<typename T> 還有未確定的參數(shù)
  • MyClass<T*> 只確定了是指針,但具體指向什么類型還不知道

測試效果:

MyClass<int> obj1;     // 全特化版本
MyClass<int*> obj2;    // 偏特化版本
MyClass<double*> obj3; // 偏特化版本
MyClass<char> obj4;    // 普通模板

obj1.show();  // 輸出:這是int的專屬版本
obj2.show();  // 輸出:這是指針類型的版本
obj3.show();  // 輸出:這是指針類型的版本
obj4.show();  // 輸出:普通模板

這就是偏特化的威力:一次定義,匹配一類類型。

進(jìn)階玩法:多參數(shù)模板的偏特化

單參數(shù)模板太簡單了,我們來看看真正有挑戰(zhàn)性的:

template<typename T1, typename T2>
class Pair {
public:
    void show() {
        std::cout << "普通的Pair" << std::endl;
    }
};

// 偏特化1:兩個參數(shù)相同
template<typename T>
class Pair<T, T> {
public:
    void show() {
        std::cout << "兩個參數(shù)類型相同" << std::endl;
    }
};

// 偏特化2:第二個參數(shù)是指針
template<typename T1, typename T2>
class Pair<T1, T2*> {
public:
    void show() {
        std::cout << "第二個參數(shù)是指針" << std::endl;
    }
};

// 全特化:完全指定
template<>
class Pair<int, double> {
public:
    void show() {
        std::cout << "int和double的組合" << std::endl;
    }
};

測試一下匹配優(yōu)先級:

Pair<int, char> p1;      // 普通模板
Pair<int, int> p2;       // 偏特化1
Pair<int, char*> p3;     // 偏特化2
Pair<int, double> p4;    // 全特化

容易踩的坑:類模板的匹配優(yōu)先級

這里有個很多人搞不清楚的問題:如果一個類型同時匹配多個特化版本,編譯器會選擇哪個?

答案:越死板的越優(yōu)先。

想象一下:

  • 普通模板:什么類型都能接受 → 最活泛,優(yōu)先級最低
  • 偏特化:只接受特定規(guī)律的類型 → 比較死板,優(yōu)先級中等
  • 全特化:只接受一種固定類型 → 最死板,優(yōu)先級最高
template<typename T, typename U>
class Test { };                    // 最活:什么都行

template<typename T>
class Test<T, int> { };           // 比較死:第二個必須是int

template<typename T>
class Test<T*, int> { };          // 更死:第一個必須是指針,第二個必須是int

template<>
class Test<double*, int> { };     // 最死:完全固定

// 匹配測試:
Test<char, double> t1;    // 最活的普通模板
Test<char, int> t2;       // 比較死的偏特化
Test<char*, int> t3;      // 更死的偏特化(限制更多)
Test<double*, int> t4;    // 最死的全特化

看個會出錯的例子:

template<typename T, typename U>
class Test<T*, U*> { };     // 偏特化1:兩個都是指針

template<typename T, typename U> 
class Test<T, T> { };       // 偏特化2:兩個參數(shù)相同

// 問題:Test<int*, int*> 會匹配哪個?
// 答案:編譯錯誤!因?yàn)閮蓚€偏特化同樣具體,編譯器不知道選哪個
// int*, int* 既滿足"兩個都是指針",也滿足"兩個參數(shù)相同"

函數(shù)模板的特化:只有全特化

注意一個重要區(qū)別:函數(shù)模板只支持全特化,不支持偏特化。

template<typename T>
void func(T t) {
    std::cout << "普通函數(shù)模板" << std::endl;
}

// 全特化:OK
template<>
void func<int>(int t) {
    std::cout << "int的特化版本" << std::endl;
}

// 偏特化:編譯錯誤!
template<typename T>
void func<T*>(T* t) {  // 這樣寫是錯的
    std::cout << "指針版本" << std::endl;
}

如果想要類似偏特化的效果,用函數(shù)重載:

template<typename T>
void func(T* t) {  // 這是重載,不是偏特化
    std::cout << "指針版本" << std::endl;
}

函數(shù)模板的匹配優(yōu)先級

函數(shù)模板的匹配規(guī)則更復(fù)雜,簡單記?。涸骄_匹配越優(yōu)先

template<typename T>
void test(T t) { cout << "1: 普通模板" << endl; }

template<typename T>  
void test(T* t) { cout << "2: 指針重載" << endl; }

template<>
void test<int>(int t) { cout << "3: int全特化" << endl; }

void test(int t) { cout << "4: 普通函數(shù)" << endl; }

// 額外測試:構(gòu)造容易出bug的情況
template<>
void test<int*>(int* t) { 
    cout << "5: int*全特化" << endl; 
}

// 測試匹配優(yōu)先級:
int x = 10;
int* p = &x;

test(x);      // 輸出 "4: 普通函數(shù)" - 普通函數(shù)優(yōu)先于模板
test(p);      // 輸出 "2: 指針重載" - 重載決議選擇更匹配的模板
test<int>(x); // 輸出 "3: int全特化" - 顯式指定模板參數(shù)
test<int*>(p);  // 顯式指定int*模板

函數(shù)匹配的兩步走:

(1) 第一步:普通函數(shù) vs 模板

  • 如果有普通函數(shù)完全匹配,優(yōu)先選擇普通函數(shù)
  • 否則進(jìn)入模板匹配流程

(2) 第二步:模板匹配流程

  • 重載決議:先選擇最匹配的模板重載版本
  • 特化檢查:然后看選中的模板是否有全特化版本

關(guān)鍵理解:

  • test(p) 為什么不選 test<int*> 全特化?
  • 因?yàn)槿鼗?nbsp;test<int*> 是基于 test(T) 模板的,其中 T=int*
  • 但重載決議時,test(T*) 對 int* 參數(shù)更匹配!
  • 而 test(T*) 沒有全特化版本,所以用重載版本

記憶口訣:普通函數(shù)優(yōu)先,然后重載決議選模板,最后看特化

實(shí)戰(zhàn)案例:手寫智能指針

讓我們看一個實(shí)際的例子,手寫一個簡化版的智能指針:

template<typename T>
class SmartPtr {
private:
    T* ptr;
public:
    SmartPtr(T* p) : ptr(p) {}
    
    T& operator*() { return *ptr; }
    T* operator->() { return ptr; }
    
    ~SmartPtr() { delete ptr; }
};

// 偏特化:處理數(shù)組類型
template<typename T>
class SmartPtr<T[]> {
private:
    T* ptr;
public:
    SmartPtr(T* p) : ptr(p) {}
    
    T& operator[](size_t index) { return ptr[index]; }
    
    ~SmartPtr() { delete[] ptr; }  // 注意用delete[]
};

使用效果:

SmartPtr<int> p1(new int(42));        // 普通版本
SmartPtr<int[]> p2(new int[10]);      // 數(shù)組版本

*p1 = 100;      // 普通版本的操作
p2[0] = 200;    // 數(shù)組版本的操作

性能優(yōu)化:編譯期計算

模板特化在性能優(yōu)化方面也很有用:

template<int N>
struct Factorial {
    staticconstint value = N * Factorial<N-1>::value;
};

// 全特化:遞歸終止條件
template<>
struct Factorial<0> {
    staticconstint value = 1;
};

// 編譯期就能計算出結(jié)果
constexprint fact5 = Factorial<5>::value;  // 120

常見錯誤總結(jié)

(1) 混淆語法

// 錯誤:全特化寫成了偏特化的語法
template<typename T>
class MyClass<int> { };

// 正確:全特化語法
template<>
class MyClass<int> { };

(2) 函數(shù)模板偏特化

// 錯誤:函數(shù)模板不支持偏特化
template<typename T>
void func<T*>(T* t) { }

// 正確:使用重載
template<typename T>
void func(T* t) { }

(3) 偏特化必須基于原始模板

template<typename T>
class Base { };

// 錯誤:偏特化引入了原模板沒有的參數(shù)
template<typename T, typename U>
class Base<T*> { };  // 編譯錯誤!

// 正確:參數(shù)個數(shù)要匹配
template<typename T, typename U>
class Base2 { };

template<typename T>
class Base2<T, int> { };  // OK

(4) 特化聲明順序問題

// 錯誤:在實(shí)例化之后才聲明特化
MyClass<int> obj;  // 已經(jīng)實(shí)例化了普通模板

template<>         // 這時候再特化就晚了
class MyClass<int> { };

// 正確:特化要在使用之前聲明
template<>
class MyClass<int> { };
MyClass<int> obj;  // 使用特化版本

面試題時間

最后給你幾道面試??碱},測試一下自己掌握得怎么樣:

題目1:下面代碼的輸出是什么?

template<typename T> void f(T) { cout << "1"; }
template<typename T> void f(T*) { cout << "2"; }
template<> void f<int*>(int*) { cout << "3"; }

int* p;
f(p);  // 輸出什么?

題目2:這段代碼能編譯通過嗎?

template<typename T, typename U>
class Test { };

template<typename T>
class Test<T, T*> { };

template<>
class Test<int, int*> { };

題目3:如何為std::vector提供特殊實(shí)現(xiàn)?

總結(jié)

模板特化看起來復(fù)雜,但掌握了核心概念就很簡單:

  • 全特化 = 完全指定所有參數(shù)
  • 偏特化 = 部分指定或者添加約束
  • 函數(shù)模板只支持全特化
  • 匹配優(yōu)先級:全特化 > 偏特化 > 普通模板

掌握了這些,你就能在面試中秒殺大部分競爭對手了。

更重要的是,這些知識在實(shí)際開發(fā)中真的很有用。STL源碼里到處都是模板特化的身影,理解了原理,你看源碼就像看小說一樣輕松。

下次面試官問你模板特化,你就可以反問他:你是想聽全特化還是偏特化?或者兩個都講?

這樣的反問,瞬間就能展現(xiàn)出你的專業(yè)水平。

責(zé)任編輯:趙寧寧 來源: 跟著小康學(xué)編程
相關(guān)推薦

2020-08-24 13:15:59

Python代碼描述符

2020-08-24 15:25:27

Python 開發(fā)運(yùn)維

2011-01-18 11:41:26

程序員

2011-01-07 10:54:39

程序員

2011-01-14 11:03:32

程序員

2011-01-11 11:37:03

程序員

2010-12-23 11:18:16

程序員

2010-12-27 10:08:22

程序員

2010-12-30 10:18:54

程序員

2011-01-05 14:53:53

程序員

2010-12-24 10:23:50

程序員

2011-01-28 10:53:18

程序員

2019-10-17 15:10:33

PHP程序員Linux

2019-07-15 12:40:02

Linux基礎(chǔ)知識程序員

2021-05-05 11:32:36

MySQL數(shù)據(jù)庫索引

2012-11-08 09:49:30

C++Java程序員

2009-05-21 15:58:12

程序員工作經(jīng)驗(yàn)職場

2011-05-24 17:20:57

程序員

2010-01-14 13:24:49

CC++語言

2010-02-04 13:56:24

C++類模板特化
點(diǎn)贊
收藏

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

国产厕所精品在线观看| www国产亚洲精品久久网站| 国产97在线 | 亚洲| 亚洲欧美综合一区二区| 丝瓜av网站精品一区二区| 日韩精品在线影院| www.com黄色片| av免费在线观看网址| 成人久久视频在线观看| 国产91露脸中文字幕在线| 国产成人免费在线观看视频| 久久在线观看| 欧美性xxxx极品hd欧美风情| 亚洲一区二区三区免费观看| www.国产三级| 美女日韩在线中文字幕| 久久精品久久精品亚洲人| 91视频在线免费| 69堂精品视频在线播放| 亚洲精品日产精品乱码不卡| 欧美日韩高清免费| 999精品国产| 久久精品麻豆| 欧美精品激情在线观看| 国产18无套直看片| 精品久久对白| 欧美日本在线播放| 欧美国产亚洲一区| 美足av综合网| 中文字幕一区二区三区视频| 六月婷婷久久| 亚洲国产精品国自产拍久久| 蜜桃一区二区三区在线| 国产91精品不卡视频| 看片网站在线观看| 清纯唯美亚洲综合一区| 亚洲精品之草原avav久久| 午夜激情视频网| 99欧美精品| 富二代精品短视频| 国产精品无码免费专区午夜| 日本网站在线免费观看视频| 99久久综合国产精品| 91久久中文字幕| 亚洲天天综合网| 国产欧美午夜| 久久久久中文字幕2018| 国精品无码一区二区三区| 第一会所亚洲原创| 一区三区二区视频| 西西444www无码大胆| 精品中国亚洲| 亚洲国产精品大全| 人妻互换一二三区激情视频| 日韩精品视频中文字幕| 欧美人与性动xxxx| 一本色道久久亚洲综合精品蜜桃 | 欧美日本三级| 91麻豆精品国产91久久久更新时间| 一级黄色香蕉视频| 日本另类视频| 欧美视频精品在线| 亚洲国产高清av| 国产精品天堂蜜av在线播放| 欧美午夜精品理论片a级按摩| 苍井空浴缸大战猛男120分钟| 热三久草你在线| 精品久久久久久久久久国产| 黄色网页免费在线观看| 国产99在线观看| 欧美特级www| 国产熟人av一二三区| 午夜av成人| 欧美日韩国产综合一区二区| 天天影视色综合| 中文成人激情娱乐网| 欧美日韩高清影院| 无码人妻一区二区三区在线视频| 国产一区二区三区国产精品| 日韩欧美自拍偷拍| 亚洲自拍偷拍精品| 视频一区中文| 中文字幕国产精品| 欧美国产日韩在线观看成人| 欧美视频在线观看| 777精品视频| 五月婷婷六月婷婷| 国内精品视频一区二区三区八戒| 91精品在线一区| 亚洲奶汁xxxx哺乳期| 久久夜色精品国产噜噜av| 亚洲精品国产精品国自产| 理论片午午伦夜理片在线播放| 国产精品国产三级国产aⅴ中文| 中文字幕乱码免费| 98色花堂精品视频在线观看| 在线欧美一区二区| 一级 黄 色 片一| 清纯唯美亚洲经典中文字幕| 在线中文字幕日韩| 久久一二三四区| 日韩和欧美的一区| 91亚洲精华国产精华| 亚洲av成人精品一区二区三区在线播放 | 中国xxxx性xxxx产国| 国产午夜一区| 欧美放荡办公室videos4k| 亚洲第一网站在线观看| 国产一区二区三区不卡在线观看 | 亚洲一区自拍偷拍| 久久精品视频91| 91成人在线精品视频| 国产一区二区三区在线观看网站 | 天堂www中文在线资源| 国产探花一区二区| 久久免费国产视频| 一区二区日韩在线观看| 99九九99九九九视频精品| 一区二区三区四区五区精品| 爱啪啪综合导航| 欧美乱妇20p| 亚洲做受高潮无遮挡| 欧美日本精品| 国产日韩精品在线播放| 涩爱av在线播放一区二区| 亚洲欧美另类小说| 黄色成人免费看| 日本在线中文字幕一区| 欧美精品在线第一页| 中文字幕欧美人妻精品一区蜜臀| 99热精品一区二区| 久久久久久久香蕉| 亚洲爽爆av| 中文字幕日韩综合av| 天天综合天天干| 成人av资源在线观看| 中文字幕欧美日韩一区二区三区| 高清电影一区| 日韩黄色高清视频| 一级aaa毛片| 国产一区二区免费看| 天堂精品视频| 日本欧美日韩| 亚洲人成电影网站色…| 久久久精品免费看| www.日韩精品| 日韩国产欧美亚洲| 国产人伦精品一区二区| 日本不卡视频在线播放| 天天干天天色天天| 亚洲成人av一区| 成人在线观看一区二区| 欧美国产91| 超碰97在线资源| 日韩成人伦理| 日韩精品一区二区三区swag| 毛片aaaaa| 高清不卡在线观看av| av在线免费观看国产| 欧美高清hd| 欧美黑人巨大精品一区二区| 国产成人精品亚洲精品色欲| 亚洲欧美日韩在线不卡| 制服下的诱惑暮生| 午夜久久一区| 国产一区视频观看| 美女福利一区二区| 亚洲一区二区黄| 五月激情丁香网| 日韩一区在线看| 婷婷中文字幕在线观看| 欧美国产综合| 精品国产乱码久久久久| 男人天堂视频在线观看| 亚洲欧美国产日韩中文字幕| 中文字幕a级片| 亚洲天堂2016| 91传媒理伦片在线观看| 亚洲巨乳在线| 色阁综合av| 国产精品毛片无码| 久久久久中文字幕2018| 国产在线一二| 欧美精品123区| 久久精品免费av| 久久久久久久久久久电影| 亚洲 欧美 另类人妖| 欧美激情91| 免费av一区二区三区| 国产精品蜜月aⅴ在线| 免费成人高清视频| 三级理论午夜在线观看| 欧美日韩久久不卡| 国产精品美女毛片真酒店| 国产欧美一区二区精品秋霞影院 | 韩国视频一区二区| 少妇高潮喷水在线观看| 日本欧美国产| 粉嫩av四季av绯色av第一区| 免费成人直播| 欧美精品在线免费观看| sese一区| 亚洲电影第1页| 怡春院在线视频| 欧美日韩精品在线| 精品国产欧美日韩不卡在线观看| 91亚洲男人天堂| 无套白嫩进入乌克兰美女| 久久亚洲欧美| 草b视频在线观看| 天天射—综合中文网| 欧美国产综合视频| 麻豆一二三区精品蜜桃| 国产91网红主播在线观看| 蜜桃传媒在线观看免费进入 | 超级白嫩亚洲国产第一| xvideos亚洲人网站| 天堂视频中文在线| 日韩一区二区三区在线观看| 午夜视频网站在线观看| 欧美日韩国产丝袜美女| 久久久久久免费观看| 国产精品日产欧美久久久久| 亚洲狠狠婷婷综合久久久久图片| 国产在线播放一区| 激情综合在线观看| 欧美日本精品| 亚洲韩国在线| 中文字幕伦av一区二区邻居| 91久色国产| 国产91在线播放精品| 日本最新高清不卡中文字幕| 秋霞在线午夜| 日韩在线国产精品| 成人免费高清在线播放| 亚洲精品美女网站| 超碰在线人人干| 五月激情综合婷婷| 国产乱码久久久久久| 亚洲精品国产第一综合99久久| 亚洲一区二区自偷自拍| 久久久久9999亚洲精品| 国产xxxxxxxxx| 高清免费成人av| 国产免费中文字幕| 奇米在线7777在线精品| 北条麻妃69av| 一本久久综合| 免费成人午夜视频| 最新亚洲一区| 日韩中字在线观看| 亚洲先锋成人| 欧美大黑帍在线播放| 欧美激情电影| 中文字幕乱码一区二区三区| 操欧美老女人| 亚洲精品9999| 久久精品久久久| 一本色道婷婷久久欧美| 热久久天天拍国产| 国产91av视频在线观看| 天天射综合网视频| 异国色恋浪漫潭| 欧美激情91| 国产av熟女一区二区三区| 一区二区三区网站| 国产日韩第一页| 欧美日韩一视频区二区| 日本一级黄视频| 伊人影院久久| aaaaaa亚洲| 日精品一区二区| 天天操天天爱天天爽| 韩国午夜理伦三级不卡影院| 日本在线观看视频一区| 国产精品亚洲第一区在线暖暖韩国| 亚洲黄色小视频在线观看| 国产中文字幕精品| 亚洲成a人片在线www| 成人污污视频在线观看| 久久精品视频18| 国产精品国模大尺度视频| 亚洲二区在线播放| 亚洲成人综合在线| 国产精品免费精品一区| 欧美日韩一级二级| 丁香花免费高清完整在线播放| 日韩av一卡二卡| 国产有码在线| 精品中文字幕在线观看| 忘忧草在线影院两性视频| 国产精品久久99久久| yiren22亚洲综合| 不卡一区二区三区视频| 琪琪久久久久日韩精品 | 超碰在线播放97| 亚洲午夜精品久久久久久性色| av电影在线网| 欧美激情视频网站| 国产精品99精品一区二区三区∴| 成人淫片在线看| 日本中文字幕在线一区| 97超碰人人爱| 免费视频一区二区三区在线观看| 亚洲天堂av线| 99免费精品视频| 成年人视频软件| 婷婷开心激情综合| 国产区精品在线| 亚洲精品中文字幕av| 男女啪啪在线观看| 日韩av成人在线| 欧美黄色一级| 日本亚洲导航| 国产欧美午夜| xxxx视频在线观看| 国产精品网曝门| 亚洲图片在线视频| 日韩一区二区在线观看| 91亚洲精选| 91av在线播放| 加勒比色老久久爱综合网| 一区二区精品在线观看| 在线不卡亚洲| 少妇丰满尤物大尺度写真| 国产蜜臀97一区二区三区| 国产一级大片在线观看| 91精品国产欧美一区二区成人| 青青草视频免费在线观看| 色哟哟亚洲精品一区二区| 黑人精品一区| 国产精品香蕉视屏| 亚洲伊人春色| 日韩国产欧美亚洲| 成人妖精视频yjsp地址| 99在线视频免费| 欧美午夜宅男影院在线观看| 亚洲精品综合网| 欧美精品电影免费在线观看| 亚洲一区二区三区久久久| 欧美日韩一区二| 丝袜美腿亚洲一区| 国产精品久久AV无码| 亚洲综合免费观看高清完整版在线| av网站在线观看免费| 日韩中文在线中文网在线观看| 中文字幕不卡三区视频| 精品久久久久久一区二区里番| 欧美精品一线| 午夜视频在线免费看| 一区二区三区中文在线观看| 国产精品久久无码一三区| 亚洲午夜av久久乱码| 成人免费黄色| 亚洲v国产v在线观看| 精品一区二区在线免费观看| 懂色av粉嫩av浪潮av| 欧洲精品一区二区三区在线观看| 丁香婷婷在线| 国产精品白丝jk喷水视频一区| 狠狠做深爱婷婷综合一区| 中文字幕亚洲乱码| 国产精品久久久久影院| 国产剧情精品在线| 久久艳片www.17c.com| 国色天香久久精品国产一区| 综合一区中文字幕| 国产美女娇喘av呻吟久久| 天天综合天天做| 精品乱码亚洲一区二区不卡| 国产在线xxx| 欧美视频小说| 免费观看日韩电影| 91成人精品一区二区| 欧美一区二区三区四区五区| 18videosex性欧美麻豆| 国内精品一区二区| 欧美亚洲视频| 国产午夜精品福利视频| 日韩一卡二卡三卡国产欧美| 丝袜国产在线| 欧美日韩精品久久久免费观看| 日韩av成人高清| 麻豆精品国产免费| 欧美一区二区三区在线观看| 国产二区三区在线| 国产精品一区二区三区四区五区| 久久亚洲影院| 波多野结衣喷潮| 欧美人狂配大交3d怪物一区| 麻豆蜜桃在线| 日本一区二区在线| 粉嫩av一区二区三区在线播放 | 免费在线成人av| 精品亚洲成av人在线观看| 日韩精品一区二区av| 日韩有码片在线观看| 任你弄精品视频免费观看| 免费网站在线观看黄| 高跟丝袜欧美一区|