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

深入理解C++方法重載、內(nèi)聯(lián)與高級(jí)用法

開(kāi)發(fā) 前端
你可以對(duì)C++中的任何方法或函數(shù)做同樣的事情。具體來(lái)說(shuō),你可以通過(guò)為具有不同數(shù)量和/或類型的參數(shù)的多個(gè)函數(shù)使用同一個(gè)名稱來(lái)重載一個(gè)函數(shù)或方法。

方法重載

你可能已經(jīng)注意到,你可以在一個(gè)類中寫多個(gè)構(gòu)造函數(shù),所有這些構(gòu)造函數(shù)都有相同的名字。這些構(gòu)造函數(shù)只在參數(shù)的數(shù)量和/或類型上有所不同。你可以對(duì)C++中的任何方法或函數(shù)做同樣的事情。具體來(lái)說(shuō),你可以通過(guò)為具有不同數(shù)量和/或類型的參數(shù)的多個(gè)函數(shù)使用同一個(gè)名稱來(lái)重載一個(gè)函數(shù)或方法。例如,在SpreadsheetCell類中,你可以將setString()和setValue()都重命名為set()。類定義現(xiàn)在看起來(lái)像這樣:

export class SpreadsheetCell {
public:
    void set(double value);
    void set(std::string_view value);
    // 省略了一些內(nèi)容以保持簡(jiǎn)潔
};

set()方法的實(shí)現(xiàn)保持不變。當(dāng)你編寫代碼調(diào)用set()時(shí),編譯器會(huì)根據(jù)你傳遞的參數(shù)來(lái)確定調(diào)用哪個(gè)實(shí)例:如果你傳遞一個(gè)string_view,編譯器會(huì)調(diào)用string_view實(shí)例;如果你傳遞一個(gè)double,編譯器會(huì)調(diào)用double實(shí)例。這被稱為重載解析。

你可能會(huì)試圖對(duì)getValue()和getString()做同樣的事情:將它們都重命名為get()。然而,這樣做是不行的。C++不允許你僅基于方法的返回類型來(lái)重載一個(gè)方法名,因?yàn)樵谠S多情況下,編譯器無(wú)法確定你試圖調(diào)用的是哪個(gè)方法實(shí)例。例如,如果方法的返回值沒(méi)有被捕獲在任何地方,編譯器就沒(méi)有辦法知道你試圖調(diào)用的是哪個(gè)方法實(shí)例。

基于const的重載

你可以基于const來(lái)重載一個(gè)方法。也就是說(shuō),你可以寫兩個(gè)具有相同名稱和相同參數(shù)的方法,一個(gè)聲明為const,另一個(gè)則不是。如果你有一個(gè)const對(duì)象,編譯器會(huì)調(diào)用const方法;如果你有一個(gè)非const對(duì)象,它會(huì)調(diào)用非const重載。通常,const重載和非const重載的實(shí)現(xiàn)是相同的。為了避免代碼重復(fù),你可以使用Scott Meyer的const_cast()模式。

例如,Spreadsheet類有一個(gè)名為getCellAt()的方法,返回對(duì)非const SpreadsheetCell的引用。你可以添加一個(gè)const重載,返回對(duì)const SpreadsheetCell的引用,如下所示:

export class Spreadsheet {
public:
    SpreadsheetCell& getCellAt(size_t x, size_t y);
    const SpreadsheetCell& getCellAt(size_t x, size_t y) const;
    // 代碼省

Scott Meyer的const_cast()模式將const重載實(shí)現(xiàn)為你通常會(huì)做的那樣,并通過(guò)適當(dāng)?shù)霓D(zhuǎn)換將非const重載的調(diào)用轉(zhuǎn)發(fā)給const重載,如下所示:

const SpreadsheetCell& Spreadsheet::getCellAt(size_t x, size_t y) const {
    verifyCoordinate(x, y);
    return m_cells[x][y];
}

SpreadsheetCell& Spreadsheet::getCellAt(size_t x, size_t y) {
    return const_cast<SpreadsheetCell&>(as_const(*this).getCellAt(x, y));
}

基本上,你首先使用std::as_const()(定義在<utility>中)將*this(一個(gè)Spreadsheet&)轉(zhuǎn)換為const Spreadsheet&。接下來(lái),你調(diào)用getCellAt()的const重載,它返回一個(gè)const SpreadsheetCell&。然后你用const_cast()將這個(gè)轉(zhuǎn)換為非const SpreadsheetCell&。

有了這兩個(gè)getCellAt()的重載,你現(xiàn)在可以在const和非const Spreadsheet對(duì)象上調(diào)用getCellAt():

Spreadsheet sheet1 { 5, 6 };
SpreadsheetCell& cell1 { sheet1.getCellAt(1, 1) };
const Spreadsheet sheet2 { 5, 6 };
const SpreadsheetCell& cell2 { sheet2.getCellAt(1, 1) };

在這種情況下,const重載的getCellAt()并沒(méi)有做太多的事情,所以你通過(guò)使用const_cast()模式并沒(méi)有贏得太多。然而,想象一下,如果const重載的getCellAt()做了更多的工作;那么將非const重載轉(zhuǎn)發(fā)給const重載可以避免重復(fù)那些代碼。

顯式刪除重載

重載的方法可以被顯式刪除,這使你能夠禁止使用特定參數(shù)調(diào)用某個(gè)方法。例如,SpreadsheetCell類有一個(gè)setValue(double)方法,可以這樣調(diào)用:

SpreadsheetCell cell;
cell.setValue(1.23);
cell.setValue(123);

對(duì)于第三行,編譯器將整數(shù)值(123)轉(zhuǎn)換為double,然后調(diào)用setValue(double)。如果由于某種原因,你不希望setValue()使用整數(shù)調(diào)用,你可以顯式刪除setValue()的整數(shù)重載:

export class SpreadsheetCell {
public:
    void setValue(double value);
    void setValue(int) = delete;
};

有了這個(gè)改變,嘗試使用整數(shù)調(diào)用setValue()的操作將被編譯器標(biāo)記為錯(cuò)誤。

Ref-Qualified方法

普通類方法可以在非臨時(shí)和臨時(shí)類實(shí)例上調(diào)用。假設(shè)你有以下類:

class TextHolder {
public:
    TextHolder(string text) : m_text { move(text) } {}
    const string& getText() const { return m_text; }
private:
    string m_text;
};

當(dāng)然,毫無(wú)疑問(wèn),你可以在非臨時(shí)實(shí)例的TextHolder上調(diào)用getText()方法。這里有一個(gè)例子:

TextHolder textHolder { "Hello world!" };
cout << textHolder.getText() << endl;

然而,getText()也可以在臨時(shí)實(shí)例上調(diào)用:

cout << TextHolder{ "Hello world!" }.getText() << endl;
cout << move(textHolder).getText() << endl;

你可以通過(guò)添加所謂的ref-qualifier來(lái)明確指定可以在哪種類型的實(shí)例上調(diào)用某個(gè)方法,無(wú)論是臨時(shí)的還是非臨時(shí)的。如果一個(gè)方法只應(yīng)該在非臨時(shí)實(shí)例上調(diào)用,在方法頭后加上&限定符。類似地,如果一個(gè)方法只應(yīng)該在臨時(shí)實(shí)例上調(diào)用,在方法頭后加上&&限定符。

下面修改后的TextHolder類實(shí)現(xiàn)了帶有&限定符的getText(),通過(guò)返回對(duì)m_text的引用。而帶有&&限定符的getText()返回m_text的右值引用,這樣m_text就可以從TextHolder中移動(dòng)出來(lái)。如果你想從臨時(shí)TextHolder實(shí)例中檢索文本,這可能會(huì)更有效率。

class TextHolder {
public:
    TextHolder(string text) : m_text { move(text) } {}
    const string& getText() const & { return m_text; }
    string&& getText() && { return move(m_text); }
private:
    string m_text;
};

假設(shè)你有以下調(diào)用:

TextHolder textHolder { "Hello world!" };
cout << textHolder.getText() << endl;
cout << TextHolder{ "Hello world!" }.getText() << endl;
cout << move(textHolder).getText() << endl;

那么第一次調(diào)用getText()會(huì)調(diào)用帶有&限定符的重載,而第二次和第三次調(diào)用則會(huì)調(diào)用帶有&&限定符的重載。

內(nèi)聯(lián)方法

C++允許你建議調(diào)用一個(gè)方法(或函數(shù))時(shí),不應(yīng)該在生成的代碼中實(shí)際實(shí)現(xiàn)為調(diào)用一個(gè)單獨(dú)的代碼塊。相反,編譯器應(yīng)該將方法的主體直接插入到調(diào)用該方法的代碼中。這個(gè)過(guò)程被稱為內(nèi)聯(lián),希望這種行為的方法被稱為內(nèi)聯(lián)方法。

你可以通過(guò)在方法定義中的名字前放置inline關(guān)鍵字來(lái)指定一個(gè)內(nèi)聯(lián)方法。例如,你可能想讓SpreadsheetCell類的訪問(wèn)器方法成為內(nèi)聯(lián)的,這種情況下,你會(huì)這樣定義它們:

inline double SpreadsheetCell::getValue() const {
    m_numAccesses++;
    return m_value;
}

inline std::string SpreadsheetCell::getString() const {
    m_numAccesses++;
    return doubleToString(m_value);
}

這向編譯器提供了一個(gè)提示,用實(shí)際的方法體替換對(duì)getValue()和getString()的調(diào)用,而不是生成代碼來(lái)進(jìn)行函數(shù)調(diào)用。請(qǐng)注意,inline關(guān)鍵字只是一個(gè)提示給編譯器。如果編譯器認(rèn)為這會(huì)影響性能,它可以忽略它。

有一個(gè)注意事項(xiàng):內(nèi)聯(lián)方法(和函數(shù))的定義必須在每個(gè)調(diào)用它們的源文件中都可用。如果你想一下,這是有道理的:如果編譯器看不到方法定義,它怎么能代替方法的主體呢?因此,如果你編寫內(nèi)聯(lián)方法,你應(yīng)該將這些方法的定義放在類定義所在的同一個(gè)文件中。

注意,高級(jí)C++編譯器不要求你將內(nèi)聯(lián)方法的定義放在類定義的同一個(gè)文件中。例如,Microsoft Visual C++支持鏈接時(shí)代碼生成(LTCG),它會(huì)自動(dòng)內(nèi)聯(lián)小的函數(shù)體,即使它們沒(méi)有被聲明為inline,即使它們沒(méi)有定義在類定義的同一個(gè)文件中。GCC和Clang也有類似的功能。

在C++20模塊之外,如果一個(gè)方法的定義直接放在類定義中,即使沒(méi)有使用inline關(guān)鍵字,該方法也隱式地被標(biāo)記為內(nèi)聯(lián)。使用C++20中從模塊導(dǎo)出的類時(shí),情況并非如此。如果你希望這些方法是內(nèi)聯(lián)的,你需要用inline關(guān)鍵字標(biāo)記它們。這里有一個(gè)例子:

export class SpreadsheetCell {
public:
    inline double getValue() const {
        m_numAccesses++;
        return m_value;
    }
    inline std::string getString() const {
        m_numAccesses++;
        return doubleToString(m_value);
    }
    // 省略了一些內(nèi)容以保持簡(jiǎn)潔
}

注意,如果你在調(diào)試器中單步執(zhí)行一個(gè)被內(nèi)聯(lián)的函數(shù)調(diào)用,一些高級(jí)C++調(diào)試器會(huì)跳轉(zhuǎn)到內(nèi)聯(lián)函數(shù)的實(shí)際源代碼,給你造成了函數(shù)調(diào)用的假象,而實(shí)際上代碼是內(nèi)聯(lián)的。許多C++程序員在不理解將一個(gè)方法標(biāo)記為內(nèi)聯(lián)的后果時(shí),就使用了內(nèi)聯(lián)方法語(yǔ)法。將一個(gè)方法或函數(shù)標(biāo)記為內(nèi)聯(lián)只是給編譯器一個(gè)提示。編譯器只會(huì)內(nèi)聯(lián)最簡(jiǎn)單的方法和函數(shù)。如果你定義了一個(gè)編譯器不想內(nèi)聯(lián)的內(nèi)聯(lián)方法,它會(huì)默默地忽略這個(gè)提示。現(xiàn)代編譯器會(huì)在決定內(nèi)聯(lián)一個(gè)方法或函數(shù)之前,考慮諸如代碼膨脹等指標(biāo),并且不會(huì)內(nèi)聯(lián)任何不劃算的東西。

默認(rèn)參數(shù)

在C++中,與方法重載類似的功能是默認(rèn)參數(shù)。你可以在原型中為函數(shù)和方法參數(shù)指定默認(rèn)值。如果用戶為這些參數(shù)提供了參數(shù),那么默認(rèn)值將被忽略。如果用戶省略了這些參數(shù),將使用默認(rèn)值。不過(guò),有一個(gè)限制:你只能為從最右邊的參數(shù)開(kāi)始的連續(xù)參數(shù)列表提供默認(rèn)值。否則,編譯器將無(wú)法將缺失的參數(shù)與默認(rèn)參數(shù)匹配。默認(rèn)參數(shù)可用于函數(shù)、方法和構(gòu)造函數(shù)。例如,你可以為Spreadsheet構(gòu)造函數(shù)中的寬度和高度分配默認(rèn)值,如下所示:

export class Spreadsheet {
public:
    Spreadsheet(size_t width = 100, size_t height = 100);
    // 省略了一些內(nèi)容以保持簡(jiǎn)潔
};

Spreadsheet構(gòu)造函數(shù)的實(shí)現(xiàn)保持不變。請(qǐng)注意,你只在方法聲明中指定默認(rèn)參數(shù),而不是在定義中指定?,F(xiàn)在,盡管只有一個(gè)非復(fù)制構(gòu)造函數(shù),你仍然可以使用零個(gè)、一個(gè)或兩個(gè)參數(shù)調(diào)用Spreadsheet構(gòu)造函數(shù):

Spreadsheet s1;
Spreadsheet s2 { 5 };
Spreadsheet s3 { 5, 6 };

一個(gè)為所有參數(shù)提供默認(rèn)值的構(gòu)造函數(shù)可以作為默認(rèn)構(gòu)造函數(shù)。也就是說(shuō),你可以在不指定任何參數(shù)的情況下構(gòu)造該類的對(duì)象。如果你嘗試同時(shí)聲明一個(gè)默認(rèn)構(gòu)造函數(shù)和一個(gè)為所有參數(shù)提供默認(rèn)值的多參數(shù)構(gòu)造函數(shù),編譯器會(huì)報(bào)錯(cuò),因?yàn)槿绻悴恢付ㄈ魏螀?shù),它不知道該調(diào)用哪個(gè)構(gòu)造函數(shù)。

責(zé)任編輯:趙寧寧 來(lái)源: coding日記
相關(guān)推薦

2023-03-28 09:56:47

TypeScripJavaScrip

2022-05-06 16:18:00

Block和 C++OC 類lambda

2023-12-31 12:56:02

C++內(nèi)存編程

2024-04-10 12:14:36

C++指針算術(shù)運(yùn)算

2023-11-15 15:54:17

C++運(yùn)算符

2023-09-12 11:44:02

C++數(shù)據(jù)對(duì)齊

2024-04-11 14:04:23

C++編程函數(shù)

2019-10-22 08:11:43

Socket網(wǎng)絡(luò)通信網(wǎng)絡(luò)協(xié)議

2024-03-28 18:12:28

指針函數(shù)指針C++

2022-02-16 12:52:22

C++項(xiàng)目編譯器

2024-07-25 14:18:29

2015-12-28 11:25:51

C++異常處理機(jī)制

2023-10-04 00:04:00

C++extern

2024-02-26 10:36:59

C++開(kāi)發(fā)關(guān)鍵字

2011-08-22 13:57:55

gtest

2024-05-17 12:56:09

C#編程線程

2013-11-05 13:29:04

JavaScriptreplace

2025-01-15 09:34:02

C#屬性方法

2024-06-28 10:25:18

2016-12-08 15:36:59

HashMap數(shù)據(jù)結(jié)構(gòu)hash函數(shù)
點(diǎn)贊
收藏

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

久久久成人网| 91精品福利观看| 久久亚洲影视婷婷| 国产精品久久久久高潮| av最新在线观看| 激情视频亚洲| 午夜av电影一区| 日韩免费三级| 99久久久无码国产精品免费| 在线播放不卡| 国产亚洲精品一区二区| 两女双腿交缠激烈磨豆腐 | 尤物九九久久国产精品的分类 | 国产福利一区二区三区| 97国产精品久久| 久久久久久成人网| 波多野结衣欧美| 欧美伊人久久大香线蕉综合69| 在线天堂一区av电影| 午夜激情在线视频| 久久99日本精品| 91国语精品自产拍在线观看性色| 国产又黄又粗的视频| 97色成人综合网站| 欧美日韩国产高清一区二区三区 | 男人天堂手机在线| fc2成人免费人成在线观看播放 | 国产亚洲一区字幕| www 成人av com| 免费看av在线| 亚洲美女91| 免费91在线视频| 97在线观看免费视频| 国产精品chinese在线观看| 欧美日韩精品三区| 日韩av资源在线| 6699嫩草久久久精品影院| 中文字幕日韩一区二区| 欧洲精品久久| 少妇av一区二区| 国产成人在线视频免费播放| 成人美女av在线直播| 自拍偷拍校园春色| 久久国产精品亚洲77777| 欧美黑人极品猛少妇色xxxxx | 亚洲精品成人a在线观看| 天堂资源在线亚洲视频| 免费在线看v| 99精品久久只有精品| 99中文字幕| 国产露脸91国语对白| 美女国产一区二区| 国产精品普通话| 亚洲不卡在线视频| 免费在线播放第一区高清av| 高清一区二区三区日本久| 免费人成在线观看| 欧美精品综合| 欧美成人合集magnet| 精品无码久久久久成人漫画| 色婷婷热久久| 日韩在线视频网站| 日本一级片免费| 欧美高清在线| 日韩中文视频免费在线观看| 肉色超薄丝袜脚交69xx图片| 欧美大黑bbbbbbbbb在线| 一区二区三区久久精品| 91激情视频在线观看| 国产探花一区在线观看| 在线看日韩av| 婷婷激情四射网| 综合亚洲视频| 欧美激情第三页| 国产 欧美 日韩 在线| 亚洲激情另类| 欧美中文字幕视频在线观看| 黄色大片网站在线观看| 石原莉奈在线亚洲二区| 国产一区视频在线播放| www.com欧美| 成人av综合在线| 久久精品国产美女| 高清av在线| 中文字幕一区二区日韩精品绯色| 中文一区一区三区免费| 中文字幕在线观看播放| 亚洲v中文字幕| 国产主播在线看| 99久久久国产精品免费调教网站| 欧美日韩高清一区二区不卡| 91精品国产高清91久久久久久| 极品尤物一区| 在线a欧美视频| 日韩女优一区二区| 日韩亚洲国产精品| 国产精品一二三在线| 国产欧美日韩综合精品一区二区三区| 国产成人精品影视| 日本一区二区视频| 羞羞视频在线免费国产| 欧美性生活大片免费观看网址| 国产区二区三区| 999久久久久久久久6666| 日韩成人av网址| 国产精品精品软件男同| 亚洲无线一线二线三线区别av| 国语自产偷拍精品视频偷| 国产九色91回来了| 东方欧美亚洲色图在线| 亚洲精品高清国产一线久久| 伊人精品影院| 欧美中文字幕一区| 国产大学生视频| 郴州新闻综合频道在线直播| 久久久久久国产免费 | 欧美一级片在线观看| 黄色性生活一级片| 综合天堂av久久久久久久| 国产福利精品在线| 涩涩视频免费看| 亚洲精品国久久99热| 九色porny91| 日韩av黄色在线| 欧美激情精品久久久久久| 成人黄色片在线观看| 成人免费高清视频| 国产免费一区二区三区四在线播放| 欧美特黄aaaaaaaa大片| 亚洲第五色综合网| 久久成人在线观看| 狠狠狠色丁香婷婷综合久久五月| 欧美大香线蕉线伊人久久| ****av在线网毛片| 日韩一区二区在线播放| 在线观看亚洲网站| 蜜桃精品在线观看| 青青成人在线| 国产精品迅雷| 亚洲精品二三区| 久久精品性爱视频| 成人综合在线观看| 狠狠精品干练久久久无码中文字幕| 成人国产精品一区二区免费麻豆 | 亚洲黄色天堂| 国产精品二区在线观看| 2024最新电影免费在线观看 | 男女视频在线看| 国产成人一区| 日本亚洲欧美三级| 丝袜+亚洲+另类+欧美+变态| 黄色成人在线免费| 2一3sex性hd| 亚洲大胆av| 精品无人区一区二区三区竹菊| 丁香花在线高清完整版视频| 精品国产乱码久久久久久1区2区| 国产这里有精品| 国产精品自拍av| 国产 欧美 日韩 一区| 欧美精品影院| 欧美黑人国产人伦爽爽爽| 黄色片网站免费在线观看| 亚洲一区二区在线播放相泽| 成人区人妻精品一区二| 午夜影院日韩| 日本高清久久一区二区三区| av亚洲一区| 久久精品久久久久久| 国产乱码久久久| 一区二区三区四区视频精品免费| 性猛交╳xxx乱大交| 1024成人| 欧美欧美一区二区| 免费一级欧美在线观看视频| 俺去了亚洲欧美日韩| 99久久久国产精品无码免费| 亚洲第一激情av| 我和岳m愉情xxxⅹ视频| 麻豆精品一区二区av白丝在线| 在线精品亚洲一区二区| 91大神精品| 热久久免费视频精品| av影片在线看| 欧美一区二区三区视频| jizz国产免费| 国产欧美精品一区二区三区四区| 成人av毛片在线观看| 亚洲网站啪啪| 婷婷精品国产一区二区三区日韩| 成人动漫视频在线观看| 97色在线视频| 在线视频1区2区| 欧美变态tickle挠乳网站| 欧美一二三区视频| 中文字幕在线免费不卡| 丰满岳乱妇一区二区| 人人狠狠综合久久亚洲| 久久人妻无码一区二区| 精品在线手机视频| 91视频99| 99精品国自产在线| 97香蕉超级碰碰久久免费的优势| 3p在线观看| 亚洲黄页视频免费观看| 怡红院男人天堂| 亚洲1区2区3区4区| 蜜桃av免费观看| 成人av免费在线| 黄色在线视频网| 日韩一级网站| 91xxx视频| 国产亚洲一区| 国产精品12| 偷拍自拍亚洲| 国产精品99久久久久久久久| 欧美日韩色网| 色av吧综合网| 免费在线看v| 亚洲国产精品资源| 国产乱淫a∨片免费视频| 色欧美片视频在线观看| 久久亚洲精品大全| 亚洲欧洲成人av每日更新| 亚洲精品乱码久久久久久久久久久久| 成人午夜激情片| 亚洲精品乱码久久久久久动漫| 美女诱惑一区| 奇米精品一区二区三区| 国产在线不卡| 2022中文字幕| 一区二区电影在线观看| 一级做a爰片久久| 欧美精品一区二区三区中文字幕| 精品一区国产| 精品久久对白| 国产伦理一区二区三区| 久久天堂久久| 亚洲最大福利视频网| 亚洲男女网站| 91精品久久久久久久久青青 | 色欧美激情视频在线| 亚洲网在线观看| 国产午夜视频在线观看| 亚洲欧洲一区二区三区在线观看| 天天舔天天干天天操| 亚洲黄色av女优在线观看 | 国产精品igao视频网网址不卡日韩| 国产成人av在线| 视频二区不卡| 国产精品久久久久久久久久尿 | 色国产综合视频| 成人免费a视频| 一本到不卡精品视频在线观看 | 香蕉成人app免费看片| 欧美国产日韩精品| 成人性生交大片免费看在线播放| 欧美激情乱人伦| 搞黄网站在线看| 韩国视频理论视频久久| 91吃瓜网在线观看| 日韩一区二区高清| 国产91久久久| 亚洲缚视频在线观看| 丝袜视频国产在线播放| 亚洲精品电影久久久| 五月婷在线视频| 亚洲一区二区国产| 3d成人动漫在线| 久久精品国产2020观看福利| av软件在线观看| 蜜臀久久99精品久久久无需会员 | 美日韩精品视频免费看| 成人短视频在线| 97国产精品人人爽人人做| 在线视频cao| 国产精品99免视看9| www.久久久久爱免| 国产精品国产一区二区| 亚洲人成网亚洲欧洲无码| 亚洲欧美电影在线观看| 亚洲国产日韩欧美在线| 久久精品国产精品亚洲精品色| 亚洲天堂成人| 国产91对白刺激露脸在线观看| 肉丝袜脚交视频一区二区| 激情在线观看视频| 成人avav在线| 精品人伦一区二区| 亚洲毛片av在线| 国产又大又黄视频| 91精品国产欧美一区二区18 | 深夜福利影院在线观看| 亚洲一区二区三区四区在线观看 | 欧美高清在线精品一区| а天堂中文在线资源| 亚洲精品日韩一| 丰满人妻老熟妇伦人精品| 欧美日本国产视频| 日本免费不卡视频| 视频一区视频二区国产精品| 2024短剧网剧在线观看| 日韩av免费看| 99香蕉久久| 日韩资源av在线| 亚洲精品91| 91淫黄看大片| 国产精品99久久久久久久vr| 午夜一区二区三区免费| 亚洲乱码国产乱码精品精可以看 | 自拍av一区二区三区| 国产精品theporn动漫| 欧美人动与zoxxxx乱| 天天av天天翘| 日韩中文字幕在线视频播放| 在线精品亚洲欧美日韩国产| 91久久精品国产91久久性色| 亚洲成人一品| 免费高清一区二区三区| 麻豆精品国产传媒mv男同| 97中文字幕在线观看| 中文字幕av一区 二区| 国产成人在线播放视频| 欧美一区二区啪啪| 国产爆初菊在线观看免费视频网站 | 91在线播放网址| h色网站在线观看| 欧美视频一区二| 日韩亚洲视频在线观看| 久久99精品视频一区97| 亚洲精品777| 欧美在线一二三区| 亚洲高清免费| 91超薄肉色丝袜交足高跟凉鞋| 中文字幕视频一区| 黄色网址中文字幕| 亚洲电影成人av99爱色| 国产成人l区| 国产精品自拍小视频| 亚洲福利天堂| 成年人视频在线免费| 成人免费av在线| 日韩影院一区二区| 制服丝袜亚洲色图| 永久免费av片在线观看全网站| 91精品国产色综合| 日韩欧美ww| 欧美 丝袜 自拍 制服 另类| 99久久夜色精品国产网站| 久久久夜色精品| 日韩欧美成人激情| 青青草原国产在线| 91免费人成网站在线观看18| 欧美军人男男激情gay| 国产性xxxx18免费观看视频| 成人免费电影视频| 一区二区视频免费看| 精品视频资源站| 91高清在线| 国产精品无av码在线观看| 999久久久免费精品国产| 国产精品人人爽人人爽| 国产调教视频一区| 这里只有精品9| 精品国产一区二区三区久久久| 国产电影一区二区三区爱妃记| 欧洲一区二区日韩在线视频观看免费| 午夜在线a亚洲v天堂网2018| 伊人影院综合网| 欧美日韩国产美| 国产网站在线免费观看| 国产精品二区三区| 亚洲欧美日本视频在线观看| 一级肉体全黄裸片| 欧美裸体一区二区三区| 日韩在线免费电影| 成人区精品一区二区| 日韩视频一区| 亚洲精品国产精品国自| 777午夜精品视频在线播放| 国产激情在线| 久久国产欧美精品| 久久久久久久尹人综合网亚洲| 亚洲一二三四视频| 91精品国产综合久久国产大片| 18视频在线观看| 久久综合福利| 日韩制服丝袜av| 久久久久久久9999| 亚洲国产精品久久| 91精品韩国| 成人一区二区av| 久久夜色精品国产噜噜av| 国产绿帽刺激高潮对白| 午夜免费在线观看精品视频| 久久不见久久见中文字幕免费| 亚洲成人手机在线观看| 亚洲成va人在线观看| 日本a级在线| 国产亚洲精品美女久久久m|