c++ 关键字 noexcept
时间: 2023-06-29 17:12:42 浏览: 117
C++11 引入了 noexcept 关键字,用于在函数声明和定义中指定该函数不会抛出任何异常。这有助于提高代码的可靠性和性能,因为编译器可以在编译时对这些函数进行优化。
如果在函数声明或定义中使用 noexcept 关键字,则表示该函数不会抛出任何异常。如果该函数抛出了异常,则程序将会调用 std::terminate() 函数来终止程序的执行。
例如,以下是一个使用了 noexcept 关键字的函数声明:
```c++
void func() noexcept;
```
在这个例子中,func() 函数被声明为不会抛出任何异常。如果该函数抛出了异常,则程序将会终止。
相关问题
c++关键字
下面是C++的关键字列表:
```
alignas, alignof, and, and_eq, asm, auto, bitand, bitor, bool, break, case, catch, char, char16_t, char32_t, class, compl, const, constexpr, const_cast, continue, decltype, default, delete, do, double, dynamic_cast, else, enum, explicit, export, extern, false, float, for, friend, goto, if, inline, int, long, mutable, namespace, new, noexcept, not, not_eq, nullptr, operator, or, or_eq, private, protected, public, register, reinterpret_cast, return, short, signed, sizeof, static, static_assert, static_cast, struct, switch, template, this, thread_local, throw, true, try, typedef, typeid, typename, union, unsigned, using, virtual, void, volatile, wchar_t, while, xor, xor_eq
```
C++中noexcept
noexcept是一个C++11的关键字,用于声明一个函数不会抛出异常。在函数声明中使用noexcept可以帮助编译器进行优化,提高代码性能,同时也可以让代码更加健壮,因为我们可以在代码中使用noexcept来处理函数抛出异常的情况。在C++11之前,很难准确地知道一个函数是否会抛出异常,使用noexcept可以让代码更加可靠。例如:
```cpp
void func() noexcept {
// 函数体不会抛出异常
}
```
如果函数在执行期间抛出了异常,则会调用std::terminate()函数来终止程序的执行。在C++17中,可以使用noexcept operator来判断一个表达式是否会抛出异常,例如:
```cpp
bool b = noexcept(func()); // b为true,因为func()声明为noexcept
```
如果表达式在执行期间不会抛出异常,则返回true,否则返回false。
阅读全文