c++ noexcept
生活随笔
收集整理的這篇文章主要介紹了
c++ noexcept
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在c++標準11之前,c++在函數(shù)聲明中有exception功能,用來指定函數(shù)拋出的異常類型。
void func1() throw(runtime_error); // 可能拋出runtime_error的異常
void func2() throw(); // 不會拋出任何異常
void func3(); // 可以拋出任何異常
如果函數(shù)拋出了沒有在異常說明中列出的異常,則編譯器會調(diào)用標準庫函數(shù)unexpected。默認情況下,unexcepted函數(shù)會調(diào)用terminate函數(shù)終止程序。
由于這種異常聲明的功能很少使用,所以在c++11中被棄用,c++11引入noexcept,具體用法如下:
void func4 noexcept;
noexcept的功能相當于上面的throw(),表示函數(shù)不會拋出異常。如果noexcept修飾的函數(shù)拋出了異常,編譯器可以選擇直接調(diào)用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的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA8永久代
- 下一篇: POJ - 3470 Walls