JAN*_*JAN 11 c++ exception-handling exception
通过Abrahams,我们有3种类型的例外:
基本方法(请纠正我,如果我错了)保留不变量,例如保留组件的不变量,没有资源泄露,操作已成功完成或抛出异常的强,离开程序状态与操作开始前完全一样.
保留不变量是什么意思?如果我的一个变量中有一个有效值,那么它不会(例如一个指针)持有一个NULL?
参考强异常保证,是否意味着我的所有变量都会在抛出异常之前存储完全相同的值?
例如 :
int main()
{
int j = 1;
int *p = &j;
// do some stuff
j = 2;
throw 1;
}
Run Code Online (Sandbox Code Playgroud)
然后我扔了,j会持有价值2还是1?
问候
在您的情况下,没有例外保证。(这基本上是情况 0)。您引用的维基百科文章很清楚:“规则适用于类实现”。此外,在您抛出之后,该变量j超出范围并且不再存在。你甚至不能再谈论它的地址,更不用说价值了
通常,类不变量是由类作者定义的,因此它意味着类作者的意思。我不明白你的观点 1.NULL是指针的有效值。
你的第二点很好。这个定义不是绝对的。例如,对字符串数据成员的操作可能会增加其容量。您可以通过const&. 然而,该字符串容量通常不被视为字符串值的一部分,因此也不被视为类不变量的一部分。
| 归档时间: |
|
| 查看次数: |
4397 次 |
| 最近记录: |