c 11標準的新特性

2022-03-18 02:48:40 字數 1223 閱讀 5681

c++引入了很多新特性,我這裡列舉了一些我覺得很好的特性. 後續可能再補充其它.

目錄當我們想讓編譯器生成預設的建構函式或賦值運算子時,我們可以使用default關鍵字指示編譯器生成. 要注意幾點:

delete關鍵字指示哪些函式是刪除掉的,不能使用. 應用場景:例如實現單例時,會把建構函式宣告為private, c++11之後更好的辦法是使用delete來指示. 要注意的問題:

使用auto關鍵字,可以讓編譯器自動推導變數型別. auto自動推導的原則我有至今有點迷惑, 有幾條原則:

emplace()/empalce_front()/empalce_back()三個操作對應了insert()/insert_front()/insert_back()操作, 不同之處是: inert是進行拷貝操作,而emplace是直接在容器的記憶體空間中進行構造乙個物件. 這可以提高**的執行效率, 避免不必要的copy操作. 例如:

class a 

};int main()

該關鍵字還是非常有用處的.很多時候,我們不希望類物件執行隱式的型別轉換,我們就可以使用explicit關鍵字修飾的建構函式或者型別轉換過載函式. 特別說明兩人點:

它即可以用於修飾類,也可以用於修改類的虛函式. 1. 當用於修飾類時,想表示該類不能被繼承,它不能作為基類. 當用於修飾虛函式時,想表示該虛函式不能在子類中被重寫. 這個關鍵字還是很有價值的,增加**可讀性,也可以讓編譯器給你作檢查.

該關鍵字用於修飾子類中重寫父類的虛函式,表明此時的虛函式是繼承自父類的. 該關鍵字也很好,可以避免父類虛函式名修改掉而漏修改相應子類虛函式的情況,因為編譯器會給你報錯的.

之前總結過,見此處;

之前也總結過,見此處

c++11中引入了右值引用的概念, 我覺得引入它的目的就是進行物件的移動而非拷⻉.. 有了右值引用, 我們就可以字義類的移動建構函式與移動賦值運算子,有了它們,我們就可以使用std::move(物件)進行移動而非拷貝操作了. 該特性很實用,能操作效率.

c++11之前,不是支援在宣告類成員資料的同時進行初始化的, 只能使用初始化列表或初始化函式. c++11之後,可以支援類內成員變數在宣告的同時進行初始化了,真的很方便,大大減少了建構函式初始化列表的長度以及簡化了函式體. 真的很方便的.

注意一點:類內初始值必須使用=的形式花括號括起來的直接初始化形式.

noexcept 關鍵字表示函式不丟擲異常.

C 標準庫 C 11新特性

c 定義了nullptr以取代0或者null。nullptr是std nullptr t型別的 constexpr 變數。std nullptr t可以顯式或隱式地轉換為任何指標 包括類的成員函式指標 但不能顯式或隱式地轉換為任何其他型別。range based for迴圈 類似於別的語言中的for...

c 11的新特性

1 型別說明符auto 2.decltype提取型別 int a 0 decltype a b b 10 cout b endl 3.基於範圍的for迴圈 4.虛函式的override和final指示符 final修飾類 類無法被繼承 final修飾虛函式 虛函式不能被重寫 override就是輔助...

C 11的新特性

c 11提供在類中定義類的資料成員,可以直接在成員之後新增 預設值 當通過編譯器自動生成的預設建構函式初始化物件時,對應的資料成員就會被初始化成對應的預設值。class test int main 在c 98中,陣列可以使用 來進行初始化,對自定義型別是不可以的。在c 11中,的使用範圍變得更廣,可...