支持异常机制的编程语言在资源申请释放上比较麻烦,如果保证所有分支情况下资源都能顺利清除,第一种设计如下
void doSomething(){
Node *n = new Node();
try{
//do something
}
catch(...){
delete n;
throw;
}
delete n;
}
在异常和正常的分支条件下都释放资源,这就违背了DRY(don't repeat yourself)原则,我们可以考虑使用栈来代替上面的实现如下
void doSomething(){
Node n;
try{
//do something
}
catch(...){
throw;
}
}
函数退出时栈空间可以得到释放,不用我们去手动释放资源。如果不能不使用指针,可以通过另外的类包装一下资源获得同样效果。
class NodeResource{
Node *n;
public:
NodeResource(){n = new Node();}
~NodeResource(){delete n;}
//重载运算符方便调用Node结构体的属性
Node *operator->() {return n;}
};
void doSomething(){
NodeResource n;
try{
//do something
}
catch(...){
throw;
}
}
C++标准库中提供模板类auto_ptr,能自动包装动态分配的对象,程序结束后会自动释放
#include<memory>
void doSomething(){
auto_ptr<Node>n (new Node);
try{
//access the Node as n-> ...
}
catch(...){
throw;
}
//Node automatically deleted at end
}
分享到:
相关推荐
总的来说,《数据结构与程序设计——C++描述》是一本全面而深入的教材,涵盖了数据结构的基础知识和C++实现,对于学习计算机科学的学生和想要提升C++编程能力的开发者来说,是一份宝贵的资源。通过结合书中的理论...
面向对象的程序设计语言——C++课件 第二版(陈志泊 )
在"数据结构与程序设计——C++语言描述"中,我们将会深入学习如何使用C++来实现各种经典的数据结构。 首先,数据结构是计算机存储、组织数据的方式,常见的数据结构包括数组、链表、栈、队列、树和图等。数组是最...
电子书 高质量程序设计指南——C++_C语言(第二版)
《高质量程序设计指南——C++/C语言》是林锐先生的一部经典著作,它深入浅出地探讨了C++和C语言的编程技巧与最佳实践。这本书旨在帮助程序员提升编程质量,避免常见错误,提高代码效率,以及遵循良好的编程规范。 ...
面向对象程序设计——c++语言描述(原书第2版).part1
面向对象程序设计——c++语言描述(原书第2版).part2
C++面向对象程序设计——基础、数据结构与编程思想 (第4版)
《C++程序设计教程——设计思想与实现习题代码答案》是一本面向初学者和有一定基础的程序员的教育性资源,旨在帮助读者深入理解和掌握C++编程语言。这本书结合了作者两年的教学实践经验,使得内容既理论严谨又贴近...
面向对象的程序设计语言C++是一种强大的、高效的编程语言,广泛应用于系统软件、应用软件、游戏开发、设备驱动等各个领域。C++是C语言的扩展,它引入了类、对象、封装、继承、多态等核心概念,使得程序设计更加模块...
《C/C++语言硬件程序设计——基于TMS320C5000系列DSP》是一本深入探讨如何使用C和C++编程语言进行数字信号处理(DSP)的专著,特别关注德州仪器(TI)的TMS320C5000系列 DSP 芯片。该书涵盖了从基础概念到高级应用的...
由浅入深的介绍开发程序时,会遇到的各种问题,培养好的编程习惯,适合广大程序员朋友,提高自身的水平,
清华大学出版社的数据结构与程序设计C++语言描述英文教材配套的中文版,可以配合平时上课使用,翻译详实,无论是上课还是做作业都会让你事半功倍,不会再因为英文看不懂而影响正常的学习,学弟学妹们觉得好就给个赞...
### 高质量程序设计指南——C++/C语言 #### 概述 《高质量程序设计指南——C++/C语言》是一本旨在帮助程序员提升软件质量意识与编程规范的重要著作。该书由林锐博士撰写,并经过多次修订和完善。书中不仅涵盖了...
在《面向对象的程序设计语言4——C++课件 第二版(陈志泊 )》中,作者深入探讨了如何利用Microsoft Foundation Class (MFC)库来开发Windows应用程序。 MFC是微软公司为简化Windows应用程序开发而设计的一组C++类库...
面向对象程序设计——基于Visual C++:第3章 C++面向对象程序设计.ppt
Richard Johnsonbaugh & Martin Kalin 著 蔡宇辉&李军义 译 c++中的经典之作。大学教材
在展开关于"深入浅出讲解Windows程序设计——Visual+C++课程"的知识点之前,我们首先要了解这门课程的重要性。Windows程序设计是IT行业中一个核心的技术领域,它涵盖了创建、开发、维护和优化运行于Windows操作系统...