本文共 1934 字,大约阅读时间需要 6 分钟。
| 阿东(C/C++爱好者): 肖兄: 4.类中静态数据成员,学了以后发现一直没用过 5.虚函数但是常用,有些特性没虚函数都感觉实现不了 6.从来不用异常,用goto------------------C++是反对用goto的难 呵呵,goto的用法,只要我说一次用goto,就有人反对一次。 上次开会,我公布我的编程规范,还差点打起来。 不过最后大家都还是用了,还觉得很好用。 人云亦云,自古有之,IT业也不能免俗啊。 事实上,大家想想,从1969年到现在,40年了,C语言没有取消goto语句,C++这么多年,居然也继承下来了,为什么? 那是因为每条语句一定有其特定的用途。具有不可替代性。 无数说面向对象编程的书籍,以及将模块化编程的书籍,对goto嗤之以鼻,视乎不批判goto就不足以说明自己的纯粹。 呵呵,先回到这里,我准备个例子传上来。 |
| 例子一:不用goto,想想需要申请的指针是10个的话,程序怎么写? void Func(void) { char* p1=null; char* p2=null; char* p3=null; p1=(char*)malloc(10); if(!p1) return; p2=(char*)malloc(10); if(!p2) { free(p1); p1=null; return; } p3=(char*)malloc(10); if(!p3) { free(p1); p1=null; free(p2); p2=null; return; } //... if(p1) { free(p1); p1=null; } if(p2) { free(p2); p2=null; } if(p3) { free(p3); p3=null; } } 例子二:用goto void Func(void) { char* p1=null; char* p2=null; char* p3=null; p1=(char*)malloc(10); if(!p1) goto Func_End_Process; p2=(char*)malloc(10); if(!p2) goto Func_End_Process; p3=(char*)malloc(10); if(!p3) goto Func_End_Process; //... Func_End_Process: if(p1) { free(p1); p1=null; } if(p2) { free(p2); p2=null; } if(p3) { free(p3); p3=null; } } |
本文转自 51CTO博客,原文链接:http://blog.51cto.com/tonyxiaohome/202297 ,如需转载请自行联系原作者