摘要: /////////////////////////////////////////////////////////////////////////////////////////////////////////////// the function template to searching the minimum value from an array of different typetemplate <class ElemType>ElemType calcmin(ElemType elemField[], int iFieldSize){int iMin = 0;for ( 阅读全文
posted @ 2012-03-27 22:05 xiaopingge 阅读(208) 评论(0) 推荐(0) 编辑
摘要: try-catch语法形式如下:try{// 包含可能抛出的异常语句throw 产生异常的对象}catch (类型名 [形参名]) // 捕获特定类型的异常{ // 异常处理}catch (类型名 [形参名]) // 捕获特定类型的异常{ // 异常处理}catch (…) // 捕获所有异常类型{ // 异常处理}异常处理中要注意的问题:如果抛出的异常一直没有函数捕获(catch),则会一直上传到C++运行系统那里,导致整个程序的终止;一般在异常抛出后资源可以正常被释放,但注意如果在类的构造函数中抛出异常,系统是不会调用它的析构函数的,处理方法是:如果在构造函数中要抛出异常,则在抛出前要记得 阅读全文
posted @ 2012-03-25 13:11 xiaopingge 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 高级程序员首先是一个高级的程序设计师,这样的程序员不仅要有良好的分析能力,还要有高超的设计能力。 一个优秀的程序应该有这样三个优秀特性:灵活性、稳定性、精准性。其中,灵活性是来自需求的多样化。多元的需求会产生功能模块的最小化。最小化模块的设计准则:重要参数;复用度(一般是根据需求共性得出);核心功能细化;程序的稳定性取决于程序的逻辑清晰与否,程序要最大程度简化。程序的精准性就要求程序复杂化,考虑多种情况。如果情况不确定或者是不明确,就将未知的情况归类,作默认处理。对不稳定的程序多加异常处理模块。 阅读全文
posted @ 2012-03-25 11:40 xiaopingge 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 今天有对数组有了新的认识。代码如下:int i = 1;// (1)int* p = &i; cout<<p<<endl;cout<<&p<<endl;// (2)int arr[2] = {0};cout<<arr<<endl;cout<<&arr<<endl;乍一看,两部分的原理一样。都是输出指针和取指针的地址。但是只要细心测试一下,就发现不同了。(1)中的地址是不同的,但是(2)中的地址输出是一样的。我开始也比较惊讶,但是静下心了分析一番之后。发现数组名是特殊的指针,即 阅读全文
posted @ 2012-02-21 16:51 xiaopingge 阅读(305) 评论(0) 推荐(0) 编辑
摘要: IMPLEMENT_DYNAMIC是实现“运行时类型识别”宏,与之相对应的是DECLARE_DYNAMIC(声明“运行时类型识别”宏)。也就是说你在.CPP文件中如果看见有IMPLEMENT_DYNAMIC,则在.H文件中必定有DECLARE_DYNAMIC的声明。DECLARE_DYNAMIC/DEClARE_DYNAMIC是为了确定运行时对象属于哪一个类而定义的宏。 DEClARE_DYNCREATE/IMPLEMENT_DYNCREATE是为了“动态创建"类的实例而定义的宏。new可以用来创建对象,但不是动态的。比如说,你要在程序中实现根据用户输入的类名来创建类的实例,下面的做 阅读全文
posted @ 2012-02-21 16:33 xiaopingge 阅读(1038) 评论(0) 推荐(0) 编辑