欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

C++中的explicit作用 - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開發(fā)/軟件開發(fā)

知識

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!

您當(dāng)前位置>首頁 » 新聞資訊 » 技術(shù)分享 >

C++中的explicit作用

發(fā)表時間:2020-10-19

發(fā)布人:葵宇科技

瀏覽次數(shù):51

C++中, 一個參數(shù)的構(gòu)造函數(shù)(或者除了第一個參數(shù)外其余參數(shù)都有默認(rèn)值的多參構(gòu)造函數(shù)), 承擔(dān)了兩個角色。 1 是個構(gòu)造器 ,2 是個默認(rèn)且隱含的類型轉(zhuǎn)換操作符。

所以, 有時候在我們寫下如 AAA = XXX, 這樣的代碼, 且恰好XXX的類型正好是AAA單參數(shù)構(gòu)造器的參數(shù)類型, 這時候編譯器就自動調(diào)用這個構(gòu)造器, 創(chuàng)建一個AAA的對象。

這樣看起來好象很酷, 很方便。 但在某些情況下(見下面權(quán)威的例子), 卻違背了我們(程序員)的本意。 這時候就要在這個構(gòu)造器前面加上explicit修飾, 指定這個構(gòu)造器只能被明確的調(diào)用/使用, 不能作為類型轉(zhuǎn)換操作符被隱含的使用。

explicit構(gòu)造函數(shù)是用來防止隱式轉(zhuǎn)換的。請看下面的代碼:

class Test1
{
public:
    Test1(int n)
    {
        num=n;
    }//普通構(gòu)造函數(shù)
private:
    int num;
};
class Test2
{
public:
    explicit Test2(int n)
    {
        num=n;
    }//explicit(顯式)構(gòu)造函數(shù)
private:
    int num;
};
int main()
{
    Test1 t1=12;//隱式調(diào)用其構(gòu)造函數(shù),成功
    Test2 t2=12;//編譯錯誤,不能隱式調(diào)用其構(gòu)造函數(shù)
    Test2 t2(12);//顯式調(diào)用成功
    return 0;
}

普通構(gòu)造函數(shù)能夠被隱式調(diào)用。而explicit構(gòu)造函數(shù)只能被顯式調(diào)用。

相關(guān)案例查看更多