日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

c++ noexcept

發布時間:2023/12/13 49 生活家
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

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