支持异常机制的编程语言在资源申请释放上比较麻烦,如果保证所有分支情况下资源都能顺利清除,第一种设计如下
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++语言描述(原书第2版).part1
C++面向对象程序设计——基础、数据结构与编程思想 (第4版)
《C++程序设计教程——设计思想与实现习题代码答案》是一本面向初学者和有一定基础的程序员的教育性资源,旨在帮助读者深入理解和掌握C++编程语言。这本书结合了作者两年的教学实践经验,使得内容既理论严谨又贴近...
面向对象的程序设计语言C++是一种强大的、高效的编程语言,广泛应用于系统软件、应用软件、游戏开发、设备驱动等各个领域。C++是C语言的扩展,它引入了类、对象、封装、继承、多态等核心概念,使得程序设计更加模块...
《C/C++语言硬件程序设计——基于TMS320C5000系列DSP》是一本深入探讨如何使用C和C++编程语言进行数字信号处理(DSP)的专著,特别关注德州仪器(TI)的TMS320C5000系列 DSP 芯片。该书涵盖了从基础概念到高级应用的...
由浅入深的介绍开发程序时,会遇到的各种问题,培养好的编程习惯,适合广大程序员朋友,提高自身的水平,
清华大学出版社的数据结构与程序设计C++语言描述英文教材配套的中文版,可以配合平时上课使用,翻译详实,无论是上课还是做作业都会让你事半功倍,不会再因为英文看不懂而影响正常的学习,学弟学妹们觉得好就给个赞...
### 高质量程序设计指南——C++/C语言 #### 概述 《高质量程序设计指南——C++/C语言》是一本旨在帮助程序员提升软件质量意识与编程规范的重要著作。该书由林锐博士撰写,并经过多次修订和完善。书中不仅涵盖了...
面向对象程序设计——基于Visual C++:第3章 C++面向对象程序设计.ppt
在展开关于"深入浅出讲解Windows程序设计——Visual+C++课程"的知识点之前,我们首先要了解这门课程的重要性。Windows程序设计是IT行业中一个核心的技术领域,它涵盖了创建、开发、维护和优化运行于Windows操作系统...
C++数据结构与程序设计共959页.pdf
C++的面向对象特性使得数据结构的设计和实现更为清晰,模板机制允许创建通用的数据结构,STL(标准模板库)则提供了现成的容器(如vector、list、set、map等)和算法,极大地提高了开发效率。 学习这本书,你将能...
《算法设计与分析——C++ 语言描述》是由陈慧南编著的一部教材,主要针对计算机科学领域的核心课程——算法设计与分析进行深入讲解。这本书由电子工业出版社出版,旨在帮助学生和专业人士掌握如何使用C++语言来设计...