日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

c++ noexcept

發布時間:2023/12/13 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 c++ noexcept 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在c++標準11之前,c++在函數聲明中有exception功能,用來指定函數拋出的異常類型。

void func1() throw(runtime_error); // 可能拋出runtime_error的異常

void func2() throw(); // 不會拋出任何異常

void func3(); // 可以拋出任何異常

如果函數拋出了沒有在異常說明中列出的異常,則編譯器會調用標準庫函數unexpected。默認情況下,unexcepted函數會調用terminate函數終止程序。

由于這種異常聲明的功能很少使用,所以在c++11中被棄用,c++11引入noexcept,具體用法如下:

void func4 noexcept;

noexcept的功能相當于上面的throw(),表示函數不會拋出異常。如果noexcept修飾的函數拋出了異常,編譯器可以選擇直接調用std::terminate()來終止程序運行,noexcept比throw()的效率高一些。

一段代碼說明noexcept與throw()的關系:(c++config.h)

// Macro for noexcept, to support in mixed 03/0x mode.
#ifndef _GLIBCXX_NOEXCEPT
# if __cplusplus >= 201103L
#  define _GLIBCXX_NOEXCEPT noexcept
#  define _GLIBCXX_USE_NOEXCEPT noexcept
#  define _GLIBCXX_THROW(_EXC)
# else
#  define _GLIBCXX_NOEXCEPT
#  define _GLIBCXX_USE_NOEXCEPT throw()
#  define _GLIBCXX_THROW(_EXC) throw(_EXC)
# endif
#endif

總結

以上是生活随笔為你收集整理的c++ noexcept的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。