09 字面量 靜態(tài)斷言 成員函數(shù)說明符

->字面量literal 是指在源代碼中寫出的固定常量,在C++98中只能是原生類型:

字符串字面量"hello"->const char[6]

整數(shù)字面量 1-> int

浮點數(shù)字面量 0.0 -> double

浮點數(shù)字面量 3.14f -> float

無符號長整數(shù)字面量 unsigned long -> 123456789ul

->C++11引入了自定義字面量,可以使用operator""后綴來將用戶提供的字面量轉(zhuǎn)換成實際的類型。

operator""s用于定義std::string;h min s ms us ns用于創(chuàng)建std::chrono::duration;

i il if 用于創(chuàng)建復數(shù)complex<double> complex<long double> complex<float>

length operator"" _m(double v)

{

? ? return length(XXX);

}

this_thread::sleep_for(500ms);

cout << "hello world"s.substr(0, 5) << endl;

->C++14引入了二進制字面量

unsigned int mask = 0b11100000;

但是IOstream中只有dec hex oct三個操作器manipulator,沒有bin,所以不能直接輸出二進制數(shù)??梢杂?/p>

cout << bitset<8>(mask) << endl;

->靜態(tài)斷言

C++98的assert允許在運行時檢查一個函數(shù)的前置條件是否成立。沒有方法允許開發(fā)人員在編譯的時候檢查假設是否成立。

C++11提供了靜態(tài)斷言機制。static_assert(編譯期條件表達式,可選輸出信息)

static_assert((alignment & (alignment - 1)) == 0, "Alignment must be power of two");

->C++14引入了數(shù)字分隔符

用于數(shù)字較長的時候增加可讀性。C++14開始允許數(shù)字型字面量中任意添加',具體如何添加,由程序員根據(jù)實際情況進行約定。

->default 和 delete 成員函數(shù)

默認構(gòu)造函數(shù) 析構(gòu)函數(shù) 拷貝構(gòu)造函數(shù) 拷貝賦值函數(shù) 移動構(gòu)造函數(shù) 移動賦值函數(shù)

生成(或不生成)這些函數(shù)的規(guī)則

->override final 說明符

C++11引入的新說明符。加在類成員函數(shù)的聲明的尾部??梢詥蝹€或組合使用。不是關(guān)鍵字,變量名仍可以用這兩個字符。

override顯示聲明了成員函數(shù)是一個虛函數(shù)且覆蓋了基類中的該函數(shù)。作用:

給開發(fā)人員明確的提示,這個函數(shù)覆蓋了基類的成員函數(shù);讓編譯器進行額外的檢查,防止拼寫錯誤或代碼改動沒有讓基類和派生類的成員函數(shù)名稱完全一致。

final則聲明了成員函數(shù)是一個虛函數(shù),且該虛函數(shù)不可在派生類中被覆蓋。如果有一點沒有滿足的話,編譯器會報錯。final用在被定義的類或者結(jié)構(gòu)名后面,作用是標志這個類或者結(jié)構(gòu)不可被派生。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容