这个语法是什么意思?运算符重载和抛出异常
what is this syntax mean? operator overloading & throw exception
在书中看到一段代码:
T& operator[](int i) throw(RangeError)
{
if(i >= 0 && i < sz) return ptr[i];
throw RangeError();
}
投掷(RangeError)是什么意思?在函数声明后面,我知道我们可以附加const或=0(对于纯虚拟),但我从未见过throw(…)
这是一个异常规范。这意味着你的函数告诉每个人它有一个有限的列表可以抛出的东西。不幸的是,没有什么可以阻止您从函数中抛出任何其他东西,但如果在运行时抛出了意外的东西,那么unexpected()
将被调用。新的C++标准中删除了异常规范。
void f() throw(); //I promise not to throw anything
void g() throw(A, B, C); // I promise not to throw anything except for A, B, or C
与const限定符不同,异常规范不是函数类型的一部分。
这是一个异常规范。它告诉编译器该函数只能抛出类型RangeError
或其子类型的期望。
相关文章:
- 使用C++中的模板和运算符重载执行矩阵运算
- 为什么这个运算符<重载函数对 STL 算法不可见?
- <T> 通过模板化运算符重载将 std::complex 乘以双倍
- C++20概念:需要运算符重载
- 使用赋值运算符重载从类中返回jobject
- 在运算符重载定义中使用成员函数(const错误)
- 字节到位运算符重载C++
- 为什么在运算符重载时需要参考?
- 类中 c++ 的运算符 + 重载
- 算术复合运算符重载为非成员
- 运算符重载 (+),用于添加两个具有 C++ 的数组
- 交换运算符 + 重载会导致无限递归
- 如何理解新的运算符重载?
- 向量保持复数的运算符重载
- 如何创建运算符重载?
- 链接列表运算符重载没有打印出我想要的内容
- C++:需要帮助了解运算符重载错误
- 使用模板化运算符重载 XOR 运算符失败
- 如何确保接受的C++模板类型使运算符重载?
- 运算符重载使用运算符+添加类模板