- 博客(25)
- 收藏
- 关注
原创 More Effective C++之7
条款7:千万不要重载&&,||和.操作符 关于&&和||的瞬间死亡定律是C++的基本准则。所以重载会破坏这个准则。而.包含的含义很多,没有什么必要的话,也不要重载。同样的警告包括. | .* | :: | ?: | new | delete | sizeof | typeid | static_cast | dynamic_cast | const_cast | reinterpr
2006-05-31 18:11:00 677
原创 More Effective C++之6
条款6:区别increment/decrement操作符的前置(prefix)和后置(postfix)形式 在C++中提供了increment/decrement操作符的重载。class A{ A& operator++(); //++i const A& operator++(int); //i++
2006-05-31 16:29:00 748
原创 More Effective C++之5
条款5:对定制的[型别转换函数]保持警觉class Sample{public: Sample(int i){m_i = i;} operator int(){return 10;}protected:private: int m_i;}; int main(int argc, char* argv[]){
2006-05-31 09:58:00 754
原创 More Effective C++之4
条款4:非必要不提供default constructor 对这一条款之中的详情,我处于半解之中。首先要说的是,关于default constructor在不显示提供的情况下,不同编译器存在不同的策略。我不认为所有编译器在这里会提供同样的方法。如果显示的提供这样的方法。我觉得未见得不好。我拿VC6作了一个测试,检测VC6的策略。测试表明default constructor会递归调
2006-05-30 17:05:00 771
原创 More Effective C++之3
条款3:绝对不要以多态(polymorphically)方式处理数据 对于多态来说,虽然是好东西,但它带来的结果是对象的大小可能发生变化,基类和派生类的大小并不一致。数组是C的产物,它不能有效承载大小不一的对象,尽管它们来自于同一基类。目前就我所知,并没有支持多态的对象容器,也许有我不知道。如果是我的话,就避免这种用法。
2006-05-29 18:22:00 763
原创 More Effective C++之2
条款2:最好使用C++转型操作符 static_cast(expression),以前的转型现在最好用这个代替吧。这个加上const_cast基本上构成了原有C风格转型的功能。dynamic_cast给出了一个安全的向下转型的操作。它的基础在于对象的虚函数表,对不具备虚函数的继承类无效,这需要加以关注。reinterpret_cast是强制将指针转型,不建议使用。如果需要的话,还不
2006-05-29 14:00:00 688
原创 More Effective C++之1
条款1:仔细区别pointers和references 不能将引用的对象指向一个指针的提领。类似于 string* s1 = NULL; string& s2 = *s1;这种做法是一定要避免的,这时标准中未定义的,发生任何事情都有可能。当知道所需要指向的某个东西,而且绝不会改变指向其他东西,或者实现一个操作符而其语法无法由pointers完成,
2006-05-29 09:24:00 683 1
原创 NMS搜索路径
在oamsys的时候,怎么知道文件的路径在什么地方呢?有一个Windows环境变量叫做AGLOAD,启动程序会根据AGLOAD的路径顺序依次搜索,直到搜到为止。优先是先AG,再CG,最后OAM。同样的环境变量还有CTA_DPATH。NMS有搜索文件的API,ctaFindFileEx。
2006-05-26 10:04:00 825
原创 Windows下STLPort和ACE
这些天做了一些事情,主要是ACE和STLport在windows下的编译,今天编译很顺利,共有三个成果。STLport4.6.2 Windows版,ACE5.5 Windows版,ACE5.5 Windows STLport版,我很奇怪的是网上所说的ACE和STLport的兼容问题我居然没有遇到,继续跟踪。有人知道所谓的不兼容是怎么回事?我用的版本号是STLport4.6.2和ACE5.5。
2006-05-23 19:07:00 1018
原创 移动疏忙系统
今天接触到疏忙系统,可能移动和联通都有,都是在7号中做了一些工作。以ISUP为例,在IAM发起后,如果用户状态不正常,如用户忙,则在ACM中发送挂断原因值,交换机受到这个原因值开始放相应提示音,等到呼叫超时后,正常挂断。所以会出现ACM中有挂断原因值,而REL中是正常挂断的情况。
2006-05-22 18:34:00 1073
原创 ISDN Setup 超时
今天遇到一个问题,在ISDN中连续遇到两条Setup消息,这两天消息所有的信息都一样,间隔是4秒。后来查到Q.931的时钟标准,T303正是这样一个时钟。Q.931协议规定,如果发送Setup后4秒钟,没有收到对端的消息回应,则认为超时,策略是第一次超时重发,第二次超时中止,清除呼叫,认为呼叫非正常中止。Q.931还定义了其他的时钟,如果有时间的话,会详细阅读。
2006-05-22 18:26:00 888 1
原创 Exceptional C++ Style之27
第27条 数据格式和效率之二:(甚至更少的)位操纵 class CBitBuffer {public: CBitBuffer(){}; virtual ~CBitBuffer(){}; size_t Size() const{ return buf_.size(); }
2006-05-18 19:52:00 725
原创 经验一定是正确的么
一转眼工作已经一年了,算得上有了一点经验。对我来说,对个人的发展好像到达了一个坎上,如果能顺利迈过这个坎,今后还能快速成长,如果不能今后就庸庸碌碌了。 我觉得比较重要的一点是要正确看待目前拥有的经验。昨天发生一件事情,我在重装NMS驱动的时候,发现CT Daemon无法启动。按照经验,我花了很长时间重装驱动,但是依然没有能解决问题。这时候是经验失效了。后来发现,由于NA20
2006-05-18 15:26:00 1069
原创 NMS的会议概述
NMS会议其实可能比较简单了需要注意的也就是文档上的一些表格的注释No E is used for CNF_NO_ECHO_CANCEL (cnfCreateConference) or NO_ECHO_CANCEL (cnf.cfg file)No D is used for CNF_NO_DTMF_CLAMPING (cnfCreateCo
2006-05-17 17:02:00 894
原创 NMS的wave相关
现在要写的是NMS的wave相关的问题,那么从NMS的配置开始。 (rvoice.rec_alaw | rvoice.play_alaw) 这项配置的含义在于支持NMS 8K 的wave,如果配置这一项加上DTMF检测的话,对CG6500来说,每个DSP能配16路。.如果加上下面的配置,那么每个DSP只能支持6路。这两项配置提供了支持11k8bit和11
2006-05-17 12:04:00 998
原创 Exceptional C++ Style之39-40
第39条 分解std::string之三:给std::string瘦身第40条 分解std::string之四:再论std::string 这里面我所最感兴趣的是一个警示:永远不要使用那些在写缓冲区时不进行越界检查的函数(例如strcpy、sprintf等)或那些可能不会为C风格字符串加上结束符的函数(例如strncpy、basic_string::copy等)。它们非但是潜伏的威胁
2006-05-16 11:34:00 677
原创 关于C++异常抛出指针问题的探讨
在C++中,抛出的异常如果是一个对象,系统会将这个对象复制一份向外抛出。try{exception e;throw e;}catch(exception& e){}注意,抛出的e和catch到的e并不是同一个e,而是系统自动复制的一份对象。对指针来说,情况有所不同。try{exception* e = new exception();throw e;
2006-05-15 10:21:00 2097
原创 Exceptional C++ Style之38
第38条 分解std::string之二:重构std::string 泛型目前的主要应用是容器,然而往往被忽略的是泛型算法。而对于泛型编程也是,实现泛型的算法,比绑死的成员算法要优秀,有利于改善类的封装性。关于效率的问题,这里值得一提,除了特殊的数据结构,一般的算法都是可能取得差不多的效率,这也是序列式容器提供自己算法的原因。看看一些算法的实现:templatebool
2006-05-11 21:48:00 860
原创 Exceptional C++ Style之37
第37条 分解std::string之一:概观std::string 对我来说,std::string是我非常感兴趣的一个类,事实上看Meyers的书,就对各种std::string的商用实现做了剖析。但是Sutter的角度不一样,他是从设计的角度分析std::string的设计不合理性。 尽可能编写单一职守的类和函数,尽量编写非成员非友元的函数,需要注意的是这里声
2006-05-11 21:28:00 721
原创 Exceptional C++ Style之36
第36条 构造式union Union这个东西使用的很早,最早是为了使用构造一个H.248对象,在使用Struct的情况下,这个对象的大小差不多是200多M,这在当时显然有点不可接受,所以选用了union,这对降低内存大小起了数量级上的作用。一个类要放入union,必须具有如下特点,构造函数等大三样必须是平凡的;无虚函数或者虚基类;其基类和非静态成员都满足这两点要求。
2006-05-10 22:27:00 812
原创 Exceptional C++ Style之35
第35条 泛型回调 回调函数是非常好用的一种手段,在泛型中自然会有一点不同。 写一点关于风格的问题,explicit是非常好的关键字,如果没有什么特殊需要可以给构造函数加上,可以避免很多类型隐式转换引起的问题。使用const的话就不想多说了。提供operator()似乎是一个比较好的方法,可能比具名的执行函数要好。我们可能在模板参数上确实有些值得商榷的地方,除非这些
2006-05-10 21:31:00 798
原创 Exceptional C++ Style之34
第34条 索引表 如何把泛型写的更加规范? 一般来说,优先考虑编写清晰、正确的代码。 对于main()a函数,不要依赖隐式int,这不是符合标准的可移植的C++。void main()和main()的写法是应该避免的。如果成员函数不会修改对象成员,那么将此函数声明成const函数。避免代码的冗余和重复。选择清晰而有意义的名字。了解并在任何适当的地方使
2006-05-04 20:06:00 826
原创 Exceptional C++ Style之33
第33条 操作符,无所不在的操作符 贪婪匹配,这是C++编译器的一个准则,也就是说,C++编译器会尽量匹配多的字符。以此为基础,会衍生出很多有趣的东东。 在一个合法的C++程序中,允许包含无限个+号,这会以此解释为++的叠加。那么其他符号能连续多少个?& 5个,&A::operator&&&&&a,means operator&&(&A::operator&&,&a
2006-05-04 19:09:00 690
原创 NMS Switch
H.110 Bus是一个普遍的标准的32*128的TimeSlot。这对于Compact PCI来说都是一样一样的。 那么NMS不同之处在于它内部存在自己的Local Bus.以CG6000C为例。首先要学会showcx95,通过信息来看交换。我们目前的交换存在一些问题,就是没有针对资源进行优化,也就是说没有针对多板之间的资源分配进行优化。其实从效率上来说,板内资源调
2006-05-04 18:47:00 1052
原创 Exceptional C++ Style之32
第32条 小小的拼写错误?鬼画符似的语言以及其他奇形怪状的东西 //这个地方是否会出现问题???????????/这似乎是我常用的注释,等等有点不一样。多了一个/,我似乎以前没有加这个斜杠的习惯,上帝保佑,幸好没有。否则发生的问题我一定没有办法进行解释,当时绝对不行,因为我也没有听说过出现什么样的事情。 C++中有一些三字词组,通常不会产生问题。这是对付78键之
2006-05-04 18:42:00 733
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人