04 2012 档案
摘要:项目经过长期多人的维护,所谓人多手杂,出现不少过多过长的switch-case分支,或者多重switch-case嵌套。每每添加功能,我都会紧皱眉头,然后带着罪恶感向已经成百上千行的函数里再添上一个case分支,然后纠结地收工了事。于是乎,在我的内心深处,switch-case俨然成了代码坏味道的代名词,写代码时总小心翼翼地避开它们,可往往又事与愿违。事实上,switch-case语句并不是代码坏味道的根源,坏味道来自糟糕的结构设计,过多的switch-case分支,多重switch-case嵌套,这些都将导致代码可读性下降,维护困难易出错。对于分支有多又长的switch-case分支,可是使
阅读全文
摘要:我想这是VC编译器的一个Bug,头文件的包含顺序不该导致运行时产生异常。在VS2008和VC6中都存在同样的问题,但是在C-Free(使用gcc编译器)则一切正常。下面是在VC中产生异常的示例代码,请注意下头文件的包含顺序。定义两个类ClassA和ClassB,在ClassB中定义了一个ClassA的成员函数指针,在ClassB.h中前置声明了ClassA。//// ClassA.h//class ClassA{public: void Func(void) {} void TestA(void);};//// ClassB.h//// 前置声明 ClassAclass ClassA;type
阅读全文
摘要:在C++编程中,成员函数指针并不常用,并且由于它实现比较复杂,很容易导致编程错误。基本用法:classB{public:intf(inta,intb){return(a+b)*m_c;}intm_c;};intmain(){typedefint(B::*MEM_FUNC)(int,int);//定义成员函数指针类型MEM_FUNCMEM_FUNCpmf;//定义成员函数指针pmfpmf=NULL;//指针可以设置为NULLpmf=&B::f;//指针可以指向一个成员函数Bb1,b2;b1.m_c=10;b2.m_c=20;inti1=(b1.*pmf)(30,40);//调用b1.f(
阅读全文