【相关推荐】
1)如果析构函数抛出异常,则异常点之后的程序不会执行,如果析构函数在异常点之后执行了某些必要的动作比如释放某些资源,则这些动作不会执行,会造成诸如资源泄漏的问题。
2)通常异常发生时,c++的机制会调用已经构造对象的析构函数来释放资源,此时若析构函数本身也抛出异常,则前一个异常尚未处理,又有新的异常,会造成程序崩溃的问题。
因为c本来就是char类型的。将a+b的值赋给c的时候,我们是按左边的类型来看,也就是按c的类型来看的。所以c就是127+3=-126(越界转换)。所以c直接用百分之d输出的时候还是负的126,因为并没有越界。但直接把a+b以%d的形式输出的话,因为a+b的值是130,超过了2的7次方减一(越界)。所以计算机会先进行一个隐式类型转换,然后再输出。