C/C++
flyound
这个作者很懒,什么都没留下…
展开
-
不定参函数使用纪要
int FormatString(const char * szFormat, const char * pTest, ....){char szBuf[1024] = {0}; va_list argptr; va_start(argptr, pTest);//此处第二个参数为,从指定变量的地址后,开始取参数列表 szBuf[1023] = '\0'; _vs原创 2011-11-01 11:15:30 · 380 阅读 · 0 评论 -
关于多继承,dynamic_cast转换失败的问题
今天在编写程序时,需要将一个基类指针安全转换成子类指针,采用C++的dynamic_cast进行动态类型转换,正常情况下能进行转换则返回转换成功后的指针,转换失败则返回NULL,但是我进行编码测试时确实已经确定了基类和子类都是正常的但始终返回NULL,后面查出,原来子类是私有继承自基类的,导致转换失败,改为公有继承则转换成功。代码模型如下class Base{};cla原创 2011-11-24 11:47:34 · 3070 阅读 · 0 评论 -
成员函数指针与高性能的C++委托(中篇)
Member Function Pointers and the Fastest Possible C++ Delegates撰文: Don Clugston翻译:周翔(接上篇)成员函数指针——为什么那么复杂?类的成员函数和标准的 C函数有一些不同。与被显式声明的参数相似,类的成员函数有一个隐藏的参数 this ,它指向一个类的实例。根据不同的编译器, th转载 2012-04-27 16:50:24 · 267 阅读 · 0 评论 -
成员函数指针与高性能的C++委托(上篇)
引子标准C++中没有真正的面向对象的函数指针。这一点对C++来说是不幸的,因为面向对象的指针(也叫做"闭包(closure)"或"委托 (delegate)")在一些语言中已经证明了它宝贵的价值。在Delphi (Object Pascal)中,面向对象的函数指针是Borland可视化组建库(VCL,Visual Component Library)的基础。而在目前,C#使"委托"的概转载 2012-04-27 16:49:21 · 278 阅读 · 0 评论 -
成员函数指针与高性能的C++委托(下篇)
Member Function Pointers and the Fastest Possible C++ Delegates撰文: Don Clugston翻译:周翔(接中篇)委托(delegate )和成员函数指针不同,你不难发现委托的用处。最重要的,使用委托可以很容易地实现一个Subject/Observer设计模式的改进版 [GoF, p. 293]转载 2012-04-27 16:50:59 · 365 阅读 · 0 评论 -
关于多线程操作同步对象造成死锁的解决方式(二)
上篇文字介绍到如果有效避免死锁的发生,那么这篇文件将介绍当死锁发生时我们如何知道并能够得知死锁发生的情形,然后快速解决它。 那么这篇文章主要讲解原理性东西不会贴很多代码,下面进入正题。 在上篇文件定义了自动锁安全类后,我们看到有些函数进行了重载,其中参数有文件名,函数名,代码行等参数,那么这个信息就是帮助我们定位死锁时代码执行到哪个位置的信息,那么我们如何传入这些参数呢?我们可以用宏原创 2012-11-28 18:52:13 · 1205 阅读 · 0 评论 -
关于多线程操作同步对象造成死锁的解决方式(一)
在多线程编程成中经常需要进行数据同步等操作,在临界区等对象使用时容易出现忘记退出临界区操作或中间执行的代码发生异常导致退出临界区代码未被正常执行,这个时候就很容易出现死锁现象了,那么我们这么解决上述问题呢? 这个问题解决的办法其实很简单,采用临时对象的方式去解决,也就是写一个自动锁的类,这个类用于接收一个临界区指针或引用,在构造时自动进入临界区,析构时自动退出临界区,那么我们也原创 2012-11-28 18:13:46 · 1309 阅读 · 7 评论