c 中的隱式對話和隱式關鍵詞

2022-05-07 05:39:13 字數 1008 閱讀 7738

這是乙個簡單的類的宣告和呼叫

#include#include

class

entity

entity(

intage)

:m_name(

"unknow

"),m_age(age){}

};int

main()

如果我們使用隱式方式的話,也可以這樣來初始化它

int

main()

如果有這樣乙個函式,你可以在主函式中如下呼叫它

void print(const entity&entity)

intmain()

直接寫print("wangtn");的話會報錯,因為string要在命名空間中使用,編譯器會預設wangtn是char字串,所以要進行強制型別轉化,強制型別轉化可以有兩種轉法

print(std::string("

wangtn

"));

print(entity(

"wangtn

"));

通常情況下(更簡潔的寫法)

entity a("

wangtn");

entity b(

22);

class

entity

explicit entity(int

age)

:m_name(

"unknow

"),m_age(age){}

};

那麼可以看到在主函式的呼叫中,直接填入數字的隱式方式將會失效

如果我想要不報錯,那麼必須要這麼寫

entity b(26

);entity b=entity(26);

C 隱式推導 auto關鍵詞

總述 c 中有乙個關鍵字,它不進行顯式宣告,而進行隱式推導,auto可以在宣告變數時根據變數初始值的型別自動為此變數選擇匹配的型別。c 語言類似的關鍵字還有decltype。如何評價 c 11 auto 關鍵字?既然auto關鍵字可以用來做型別推斷,使得c 在使用auto時更像是在用動態型別語言。既...

Scala中的隱式轉換函式 隱式引數和隱式類

隱式轉換函式 所謂隱式轉換函式指的是implicit關鍵字修飾的且只有乙個引數的函式,其作用是 1.隱式轉換增強現有型別,2.隱式轉換做引數型別轉換 1.例如 inplicit def int2string n int string n.tostring 上案例 我們把fruit物件轉換成了monk...

隱式轉換中隱式引數與隱式函式的使用

隱式引數的使用 要定義多個隱式引數時,需要使用柯里化函式。隱式轉換作用就是 當呼叫方法時,不必手動傳入方法中的隱式引數,scala會自動在作用域範圍內尋找隱式值自動傳入。1 同型別的引數的隱式值只能在作用域內出現一次,同乙個作用域內不能定義多個型別一樣的隱式值。2 implicit 關鍵字必須放在隱...