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

日本91av在线播放| 亚洲国产欧美在线| 成人免费直播live| 欧美日韩精品亚洲精品| 欧美激情极品| 欧美日韩在线播放三区四区| 法国空姐在线观看免费| 少妇无码一区二区三区| 久草中文综合在线| 亚洲**2019国产| 国产精品美女高潮无套| 视频一区中文字幕精品| 欧美性猛交丰臀xxxxx网站| 9999在线观看| 日本1级在线| 激情都市一区二区| 欧美在线亚洲在线| 黄色a级片在线观看| 日本午夜精品久久久| 欧美日韩国产首页在线观看| 人人妻人人添人人爽欧美一区| 在线激情小视频| 久久综合久久综合久久| 亚洲自拍偷拍在线| 国产在线一级片| 日韩午夜高潮| 欧美日产国产成人免费图片| 少妇的滋味中文字幕bd| 色天下一区二区三区| 91精品国产综合久久久久久| 91激情视频在线| 美女视频在线免费| 亚洲一区二区精品3399| 伊人色综合久久天天五月婷| 男女视频在线观看| 成人av动漫在线| 91中文字幕在线| 亚洲天堂网在线观看视频| 国产精品视频| 亚州精品天堂中文字幕| 麻豆视频在线观看| 图片区亚洲欧美小说区| 国产一区二区三区直播精品电影| 99久久国产精| 欧美日韩另类图片| 精品国产凹凸成av人网站| www.偷拍.com| 久久九九精品视频| 欧美精品成人一区二区三区四区| 男人插女人下面免费视频| av综合电影网站| 欧美日韩国产区| 丁香花在线影院观看在线播放| 日日骚av一区二区| 美国av在线播放| 欧美亚洲视频一区| 日本xxxxwww| 懂色av一区二区三区免费观看| 91亚洲精品在线| 国产又黄又粗又猛又爽| 久久99国产乱子伦精品免费| 国产精品男人爽免费视频1| 成人免费一级片| 日本欧美久久久久免费播放网| 国产98色在线| 精品国产www| 麻豆精品久久久| 国产精品直播网红| 国产精品无码在线播放| 韩国av一区二区三区| 成人观看高清在线观看免费| 91中文字幕在线视频| 寂寞少妇一区二区三区| 91九色在线免费视频| 懂色av蜜臀av粉嫩av分享吧| av中文字幕在线不卡| 蜜桃av噜噜一区二区三区| 日本午夜在线视频| 亚洲国产精品精华液2区45| 五月天综合网| 国产在线一区二区视频| 亚洲国产日韩在线一区模特| 啊啊啊一区二区| 99久久er| 日韩视频中午一区| 国产黄色网址在线观看| 第四色成人网| 欧美黑人视频一区| 国产精品一区无码| 国产一区二区美女| 精品无人乱码一区二区三区的优势| 三级视频在线| 亚洲欧美乱综合| 欧美日韩在线视频一区二区三区| 成人精品国产亚洲| 精品福利一区二区三区免费视频| 亚洲欧洲久久久| 亚洲一区 二区 三区| 26uuu亚洲伊人春色| 中文字幕在线观看欧美| 成人中文字幕电影| 涩涩涩999| 欧美人体视频xxxxx| 91黄色免费看| 美女伦理水蜜桃4| 国产毛片毛片毛片毛片| 夜色77av精品影院| 久久精品视频在线播放| 日本aⅴ在线观看| 免费一区视频| 99一区二区| 1pondo在线播放免费| 性感美女极品91精品| 中文字幕 欧美日韩| 亚洲三级网址| 久久99国产精品自在自在app | 性欧美一区二区三区| 久久综合丝袜日本网| 欧美一级爱爱视频| 欧美日韩亚洲国产| 亚洲国产精品yw在线观看| 久久精品亚洲a| 日韩影院在线观看| 国外成人免费视频| 人人澡人人添人人爽一区二区| 91黄色激情网站| 亚洲国产综合视频| 国产精品啊啊啊| 成人综合网网址| av在线中文| 色狠狠色狠狠综合| 亚洲av综合一区二区| 99av国产精品欲麻豆| 91久久久在线| 黄色在线播放网站| 欧美性大战久久久久久久| 97人妻精品一区二区三区免| 国内精品美女在线观看| 亚洲综合小说区| 国产网站在线免费观看| 欧美日韩高清一区二区三区| 欧美激情亚洲色图| 亚洲伦伦在线| 精品国产乱码久久久久久久软件| 草草影院在线| 亚洲国产成人一区| 国产精品30p| 成人少妇影院yyyy| 日韩美女爱爱视频| 136福利精品导航| 欧美黑人xxxⅹ高潮交| 亚洲美女综合网| 亚洲国产成人精品视频| 黄色av电影网站| 一区二区亚洲| 激情欧美一区二区三区中文字幕| 岛国av免费在线观看| 亚洲国产精品专区久久| 国产亚洲欧美久久久久| 成人国产精品免费观看动漫| 欧美一级片免费播放| 欧美福利在线播放网址导航| 97人洗澡人人免费公开视频碰碰碰| 日本精品久久久久久| 欧美日韩另类视频| 色欲av无码一区二区三区| 免费亚洲一区| 亚洲一区二区三区乱码| 另类一区二区| 欧美激情国产日韩精品一区18| 亚洲av色香蕉一区二区三区| 五月天一区二区| 手机免费看av| 狠狠色狠狠色综合| www.国产在线视频| 九九亚洲精品| 成人国产精品av| 国产精品蜜臀| 亚洲桃花岛网站| 国产伦理吴梦梦伦理| 亚洲最新视频在线观看| xxxxxx黄色| 久久国产精品色| 青春草国产视频| 欧美理论电影大全| 91久久久一线二线三线品牌| 黄视频网站在线观看| 最近2019中文免费高清视频观看www99 | 免费大片黄在线观看视频网站| 欧美一区永久视频免费观看| av大片免费观看| 国产精品污网站| 欧美日韩人妻精品一区在线| 日本中文在线一区| 乱子伦一区二区| 夜夜躁狠狠躁日日躁2021日韩| 成人精品一区二区三区电影黑人| 国产va在线视频| 日韩小视频网址| 深夜福利在线看| 欧美精品九九99久久| 国产精品免费av一区二区| 国产精品视频在线看| 欧美日韩人妻精品一区在线| 蜜臀av一区二区| 9久久9毛片又大又硬又粗| 日韩中文在线电影| 国产欧美一区二区视频| 六九午夜精品视频| 欧美一级免费看| 黄av在线播放| 伊是香蕉大人久久| 欧美天堂在线视频| 69堂成人精品免费视频| www.com国产| 亚洲最色的网站| 国语对白在线播放| 欧美国产日韩在线观看| avtt香蕉久久| 成人精品高清在线| 欧美污在线观看| 蜜桃av一区二区| 97国产精东麻豆人妻电影| 欧美在线免费| 在线视频一区观看| 精品久久美女| 免费在线一区二区| 欧美在线导航| 国产欧美一区二区视频| 日韩一区免费| 国产日韩综合一区二区性色av| 日韩欧美一中文字暮专区 | 少妇一级淫片免费放播放| 欧美日韩在线观看视频小说| 久久综合九色99| 中文字幕一区二区三区中文字幕| 国产日韩在线视频| 欧美高清免费| 国产精品稀缺呦系列在线| 东京一区二区| 国产97在线观看| 3d欧美精品动漫xxxx无尽| 欧美亚洲午夜视频在线观看| 国内激情视频在线观看| 久久久久久久久久国产| 国产区美女在线| 国模精品一区二区三区色天香| 五月天激情四射| 青青草娱乐在线| 亚洲传媒在线| 亚洲精品国产第一综合99久久| 欧美日韩高清在线| 韩剧1988在线观看免费完整版| 欧洲在线视频一区| 天天操夜夜操很很操| 久久无码精品丰满人妻| 亚洲成人三级| 亚洲精品进入| 久久久久国产一区二区三区四区| cao在线观看| 99精品视频免费全部在线| 欧美深夜福利视频| 欧美亚洲三级| 亚洲狼人综合干| 久久99精品一区二区三区| 爱豆国产剧免费观看大全剧苏畅| 国产在线精品视频| 任你躁av一区二区三区| 99精品欧美一区二区蜜桃免费| 51调教丨国产调教视频| 日本一区二区久久| www.5588.com毛片| 亚洲综合色噜噜狠狠| 日韩av大片在线观看| 欧洲一区二区av| 国产伦精品一区二区三区四区| 亚洲综合色站| 国产午夜精品久久久久久免费视| 国产精品一区二区三区免费| 国语一区二区三区| 欧美日韩一区二区视频在线| 色综合久久网| 久久综合久久网| 视频一区视频二区中文| 国产成人美女视频| 成人综合激情网| 日本少妇xxxxx| 亚洲综合精品自拍| 亚洲av无码精品一区二区| 欧美一区二区视频在线观看2022| 亚洲av无码国产精品久久| 午夜在线观看视频| 国产一区观看| 欧美日韩视频不卡| 亚洲一区二区日本| av黄色免费网站| 欧美一区二区三区在线观看免费| 视频一区视频二区中文| 69精品丰满人妻无码视频a片| 一区免费视频| 日本a√在线观看| 国产91色综合久久免费分享| 亚洲黄色小说视频| 亚洲综合在线观看视频| av一级在线观看| 欧美va亚洲va香蕉在线| av资源在线观看免费高清| 一区二区三区日韩欧美精品| 欧美日韩视频免费| 日本亚洲天堂网| 视频免费在线观看| 亚洲欧美一区二区在线观看| 在线观看亚洲天堂| 欧美mv日韩mv国产| 男人在线资源站| 国产成人精彩在线视频九色| 超碰成人97| 91成人在线视频观看| 视频一区二区不卡| 六十路息与子猛烈交尾| 亚洲欧美另类综合偷拍| 亚洲无码精品在线观看| 亚洲欧美日韩在线高清直播| 爱情岛论坛亚洲品质自拍视频网站 | 天天做天天干天天操| 国产夜色精品一区二区av| 国产精品不卡av| 日韩欧美国产一区在线观看| 免费网站免费进入在线| 国产精品第3页| 最新亚洲精品| 亚洲 欧美 日韩 国产综合 在线 | 91精品视频专区| 日韩精品91| 国产精品igao| 久久嫩草精品久久久精品| 国产亚洲精品久久久久久打不开| 日韩视频123| 伊人电影在线观看| 亚洲iv一区二区三区| 图片区亚洲欧美小说区| 国内自拍第二页| 国产精品乱人伦| 中文字幕日韩经典| 在线观看精品国产视频| 日韩免费va| 亚洲 国产 欧美一区| 奇米一区二区三区av| 亚洲天堂av中文字幕| 欧美日韩一区三区| 日本亚洲精品| 亚洲www在线观看| 欧美三级黄美女| 在线观看亚洲免费视频| 午夜精品久久久久影视| 香蕉视频网站在线| 青青草99啪国产免费| 国产亚洲一区| 性生活免费在线观看| 亚洲天堂av老司机| www.av黄色| 91禁外国网站| 欧美精选一区二区三区| 中文字幕线观看| 亚洲国产精品久久久久秋霞影院 | 久久成人av| 色播五月综合网| 亚洲黄色性网站| 色欲av永久无码精品无码蜜桃| 97视频在线看| 精品久久一区| 中文字幕在线视频一区二区| 亚洲va国产天堂va久久en| 亚洲人成色777777老人头| 国产91网红主播在线观看| 久久中文字幕av一区二区不卡| 国产资源中文字幕| 亚洲va欧美va人人爽午夜| 黄色小视频在线免费观看| 国产在线播放91| 亚洲午夜激情在线| 国产小视频自拍| 欧美一区二区三区色| 狼人综合视频| 亚洲二区自拍| 成人免费福利片| 中文字幕码精品视频网站| 欧美福利视频在线观看| 在线亚洲a色| 黄色一级片免费播放| 狠狠色噜噜狠狠狠狠97| 成年人在线观看| 国产精品二区在线| 葵司免费一区二区三区四区五区| www.xxxx日本| 亚洲欧美日韩成人| 日韩中文字幕无砖| 日本免费观看网站| 一个色综合av| av在线电影免费观看|