C++中一些你不知道的冷知识
1、explicit關(guān)鍵字
explicit用來防止由構(gòu)造函數(shù)定義的隱式轉(zhuǎn)換,比如:
class Base base=10;
即Base類只有一個int類型的變量,explicit使用了以后,就不允許這樣寫。
被聲明為explicit的構(gòu)造函數(shù)通常比非explicit的構(gòu)造函數(shù)更受歡迎,因為它們禁止編譯器執(zhí)行非預(yù)期的類型轉(zhuǎn)換。
2、volatile關(guān)鍵字
volatile變量是隨時可能發(fā)生變化的,它告訴編譯器,與volatile變量有關(guān)的運算,不要進行任何優(yōu)化,每次讀取volatile變量時都重新從內(nèi)存讀取,不會有臨時寄存器來存放變量的值。
volatile可以適用于基礎(chǔ)類型,例如:
int,char,long……
也適用于C的結(jié)構(gòu)和C++的類。當對結(jié)構(gòu)或者類對象使用volatile修飾的時候,結(jié)構(gòu)或者類的所有成員都會被視為volatile.
一般的在多線程環(huán)境中,涉及到某些變量同步的操作時,使用volatile會更好;
3、mutable關(guān)鍵字
mutable用于類的非靜態(tài)和非常量數(shù)據(jù)成員,一般類的成員函數(shù)被聲明為const,就表示不會修改類的數(shù)據(jù)成員,但如果要在常成員函數(shù)中修改類的非靜態(tài)和非常量數(shù)據(jù)成員,則可以使用mutable修飾該數(shù)據(jù)成員,如下:
編譯會報錯:test.cpp:13: 錯誤:increment of data-member ‘demo::m_nCount’ in read-only structure,但如果改為如下代碼:
則編譯通過。
在學習C/C++或者想要學習C/C++可以加我們的學習交流QQ群:712263501群內(nèi)有相關(guān)學習資料
總結(jié)
以上是生活随笔為你收集整理的C++中一些你不知道的冷知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个qq男生网名唯美!
- 下一篇: C语言优势大揭露,你还在等什么呢?