c++ 相比於 c 的一大優勢就在於 c++ 本身就定義了一套完整的異常處理機制。 然而在 c++11 之前,幾乎沒有人去使用在函式名後書寫異常宣告表示式, 從 c++11 開始,這套機制被棄用,所以我們不去討論也不去介紹以前這套機制是如何工作如何使用, 你更不應該主動去了解它。
c++11 將異常的宣告簡化為以下兩種情況:
函式可能丟擲任何異常
函式不能丟擲任何異常
並使用noexcept
對這兩種行為進行限制,例如:
void may_throw(); // 可能丟擲異常
void no_throw() noexcept; // 不可能丟擲異常
使用noexcept
修飾過的函式如果丟擲異常,編譯器會使用std::terminate()
來立即終止程式執行。
noexcept
還能夠做操作符,用於操作乙個表示式,當表示式無異常時,返回true
,否則返回false
。
#include void may_throw()
auto non_block_throw = ;
void no_throw() noexcept
auto block_throw = () noexcept ;
int main()
noexcept
修飾完乙個函式之後能夠起到封鎖異常擴散的功效,如果內部產生異常,外部也不會觸發。例如:
try catch (...)
try catch (...)
try catch (...)
最終輸出為:
捕獲異常, 來自 may_throw()
捕獲異常, 來自 non_block_throw()
傳統 c++ 裡面要編寫乙個充滿特殊字元的字串其實是非常痛苦的一件事情, 比如乙個包含 html 本體的字串需要新增大量的轉義符, 例如乙個windows 上的檔案路徑經常會:c:\\file\\to\\path
。
c++11 提供了原始字串字面量的寫法,可以在乙個字串前方使用r
來修飾這個字串, 同時,將原始字串使用括號包裹,例如:
#include #include int main()
c++11 引進了自定義字面量的能力,通過過載雙引號字尾運算子實現:
// 字串字面量自定義必須設定如下的引數列表
std::string operator"" _wow1(const char *wow1, size_t len)
std::string operator"" _wow2 (unsigned long long i)
int main()
自定義字面量支援四種字面量:
整型字面量:過載時必須使用unsigned long long
、const char *
、模板字面量算符引數,在上面的**中使用的是前者;
浮點型字面量:過載時必須使用long double
、const char *
、模板字面量算符;
字串字面量:必須使用(const char *, size_t)
形式的參數列;
字元字面量:引數只能是char
,wchar_t
,char16_t
,char32_t
這幾種型別。
c++ 11 引入了兩個新的關鍵字alignof
和alignas
來支援對記憶體對齊進行控制。alignof
關鍵字能夠獲得乙個與平台相關的std::size_t
型別的值,用於查詢該平台的對齊方式。 當然我們有時候並不滿足於此,甚至希望自定定義結構的對齊方式,同樣,c++ 11 還引入了alignas
來重新修飾某個結構的對齊方式。我們來看兩個例子:
#include #include struct storage ;
struct alignas(std::max_align_t) alignasstorage ;
int main()
其中std::max_align_t
要求每個標量型別的對齊方式嚴格一樣,因此它幾乎是最大標量沒有差異, 進而大部分平台上得到的結果為long double
,因此我們這裡得到的alignasstorage
的對齊要求是 8 或 16。 字面量和整數字面量
字面量是指c c 源 中直接使用的常量,字面量的意思是 一眼看上去是什麼就是什麼 例如語句 int x 10 中10就是字面量,它相對於變數,只有乙個確定的值不能改變,這個值就是它看上去的值。c c 中的字面量有一下幾種 1.0和正整數,如10 123等 負整數不是字面量,因為加了 運算子 2.浮點...
Go字面量(字面常量)
目錄 字面量字面量型別 整型字面量 浮點型字面量 複數型別字面量 字元型字面量 字串字面量 程式語言源程式中表示固定值的符號叫做字面量,也稱字面常量。一般使用裸字串行來表示不同型別的值。字面量可以被程式語言編譯器直接轉換為某個型別的值。go的字面量可以出現在兩個地方 一是用於常量和變數的初始化,二是...
資料表示字面量整型字面量
編寫程式,首先面對的是資料。在程式中,資料該如何表示出來?根據表示的方式不同,資料通常有兩種表示方式 直觀表示和指代表示。本章將詳細講解這兩種表示方式本文選自明明白白學c 大學霸。在 編寫中,資料往往是可以直接寫到 中的。對於這些資料,人們可以通過字面所表達的意思,獲知其含義,所以它們也被稱為字面量...