博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  C++

摘要:最近写一个程序,其中要用到多态技术。但是有个问题,就是在外部的函数中如何判断传入的指针所属类型。 比如说: class A {…};class B: public A {…};class C: public A {…};void Dis(A* abc, int num); 这里Dis中传入的是一个数组指针,当我想在Dis中调用的时候,会出现类型判断不对的情况,比如说我传入B*对象,长度为100,可能运行到30个的时候就出错了,这里就需要明确我传入对象的类型,但是在Dis中每次进行判断,然后强制转换类型的方法好像不太好。 我的解决方案是,利用模板和typeid来处理 templa 阅读全文

posted @ 2009-12-06 17:24 红波 阅读(134) 评论(0) 推荐(0)

摘要:一般在构造函数中分配内存是比较麻烦的,因为一旦存在多个分配时,后面的无法分配内存时,就会出现弹出异常。那么前面分配的内存就无法收回,这样的话就存在内存泄露了解决办法,在分配内存时引入异常处理,一旦抛出异常,就把前面分配的内存释放掉问题,若是存在多次分配时,try catch的次数太多最终方案,还在思考 阅读全文

posted @ 2009-11-10 09:58 红波 阅读(389) 评论(0) 推荐(0)

摘要:因在模板函数中使用new分配内存,总是不对,后写了这样一段代码测试template typename Tunsigned tt(){ return sizeof(T); }int main(){ unsigned n = sizeof(unsigned char); // n为1 unsigned n1 = ttunsigned char(); // n1为8 unsigned n2 = ttdouble(); // n2也为8 return 0;} 这样表明返回的类型的大小不对,即VC6.0没能识别出类型T来,但是此段代码在g++ 3.4.5中n1是1的 由于template 阅读全文

posted @ 2009-08-20 13:31 红波 阅读(591) 评论(0) 推荐(0)

摘要:如何使用extern以及staticextern 和static的使用方法,应该属于C语言的基础知识了。可是,在实际工作中,还是经常会在代码里看到关于这两个限定符使用的问题,总结一下,大致有两类:其一,对于模块中的变量或者函数,不了解到底加不加static 或者 extern修饰符;其二,在加限定符的时候,不知道正确的使用方法。因此,有必要旧话重提,说明一下。简单的说,记住两句话即可,1 Static表示:被修饰的变量或者函数不可以被本模块以外的其他任何模块使用;而extern恰恰相反,表示同意其被被本模块以外的其他模块使用;2 当变量或者程序没有被static或者extern 修饰的时候,变 阅读全文

posted @ 2007-03-31 17:03 红波 阅读(299) 评论(0) 推荐(0)