在构造函数后面添加 throw()表示什么意思
时间: 2023-12-09 16:06:40 浏览: 83
02_线性表的顺序表示及插入、删除操作.rar_C++_dugfvx
在 C++98/03 中,可以在函数声明和定义的末尾加上 `throw()`,表示该函数不会抛出任何异常。例如:
```c++
class MyClass {
public:
MyClass() throw(); // 声明默认构造函数不会抛出异常
void func() const throw(); // 声明 const 成员函数不会抛出异常
};
MyClass::MyClass() throw() {
// 构造函数的实现
}
void MyClass::func() const throw() {
// const 成员函数的实现
}
```
然而,在 C++11 中,`throw()` 已经被 `noexcept` 关键字所取代。因此,在 C++11 或以上版本中,应该使用 `noexcept` 来指定函数不会抛出异常,而不是使用 `throw()`。例如:
```c++
class MyClass {
public:
MyClass() noexcept; // 声明默认构造函数不会抛出异常
void func() const noexcept; // 声明 const 成员函数不会抛出异常
};
MyClass::MyClass() noexcept {
// 构造函数的实现
}
void MyClass::func() const noexcept {
// const 成员函数的实现
}
```
需要注意的是,如果使用了 `throw()` 或 `noexcept` 来指定函数不会抛出异常,而实际上函数内部却抛出了异常,那么程序将会调用 `std::terminate()` 函数来终止程序的运行。因此,在使用 `throw()` 或 `noexcept` 来指定函数不会抛出异常时,需要确保函数内部不会抛出任何异常。
阅读全文