在C中不使用括号类的原因是什么?
发布时间:2020-12-16 10:51:58 所属栏目:百科 来源:网络整理
导读:通常需要完成以下任务:更改某些内容的状态,执行操作,然后将状态更改回原始状态.例如,在Win32 GDI中,需要更改背景颜色,然后进行一些绘制,然后再更改颜色. 它可以直接完成: COLORREF oldColor = SetBkColor( deviceContext,newColor );drawStuff( deviceCont
通常需要完成以下任务:更改某些内容的状态,执行操作,然后将状态更改回原始状态.例如,在Win32 GDI中,需要更改背景颜色,然后进行一些绘制,然后再更改颜色.
它可以直接完成: COLORREF oldColor = SetBkColor( deviceContext,newColor ); drawStuff( deviceContext ); SetBkColor( deviceContext,oldColor ); 或者通过一个括号类,它将在构造函数中进行向前更改并在析构函数中进行向后更改: CBkColorSwitcher switcher( deviceContext,newColor ); drawStuff( deviceContext ); //once control reaches end of block the switcher is destroyed and the change is reverted 括号类的优点是显而易见的 – 如果在更改之间抛出异常,则更改将被正确恢复.有什么缺点? 解决方法
我在这里挑剔,但是:
>代码大小,由于异常处理程序,您的代码会更大.>你需要编写很多类来处理所有类型的开关.>更大的堆栈.>始终在所有异常上执行代码,即使它不需要(例如,您只是希望应用程序崩溃) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |