![]() |
1
17
打电话给
通常,异常由const引用捕获。例如,
如果
如果不想生成要从中返回的字符串
|
![]() |
2
4
因为它不会变异
一般来说,所有不改变类实例的函数都应该声明
|
![]() |
3
3
把问题翻过来。为什么不是康斯特? 如果是“char*what()const”,则可以修改what()返回指针的内部char数组。如果exception()允许任意代码以这种方式操作其内部缓冲区,那么what()将返回一个常量char*,而不是char*,这将是非常愚蠢的。 如果是“const char*what()”,没有const限定符,则表示调用what()将修改异常的内部状态。但这不是你所期望的。 所以我们得到了“const char*what()const”。返回指向常量数组的指针的常量函数。结果就是你可以用常量引用调用它。通常有哪些例外。 毕竟,通常不更改异常,而是构造异常,抛出异常,然后让处理代码在不更改异常的情况下操作它们。因此,它们的成员函数应该是常量。 |
![]() |
4
2
理由可能来自维护稳定的愿望。例如,如果进程内存不足,则可能引发异常。如果是这样的话,修改“What”可能会适得其反,从而需要更多的空间。如果程序员试图这样做,在这种情况下,它会立即中止整个程序。可能不是你想要的。 同样,不适合使用堆栈中的额外空间,因为这正是抛出异常期间正在uwinding的内容。 也就是说,boost库有一个boost::异常 做 允许您在异常向上推进时向其添加材料。警告清空器。 |
![]() |
AstralHex · 矩阵乘法代码工作不正常 6 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 6 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 6 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 6 月前 |