随笔分类 -  C and C++

摘要:1、概述C++中出了const关键字以后,宏定义常量的功能已经不在被推荐使用。这使得宏似乎没有了用武之地。实际上,宏还可以做很多事情,笔者也难以全部列举。这里,仅仅列举几个典型的用法,希望大家能够从中获益。2、实现多环境兼容常见的情况是,我们实现了一个函数,希望它只在某种编译条件满足是被编译和使用。例如,我希望在源码中插入调试语句,以便以Debug方式运行时能够通过调试信息观察程序运行情况。但是,在产品发售给用户时,我又希望这些调试信息不要输出,以降低代码尺寸,提高运行性能。 这一问题的解决方法就是使用宏。根据条件编译指令,对于不同的编译条件,提供不同的实现。例如:我们希望在特定的位置向日志中 阅读全文
posted @ 2011-05-10 19:56 tungli 阅读(483) 评论(0) 推荐(0)
摘要:本文出自乾坤一笑 的Blog文章 水平不高不低的C++程序员最喜欢挂在嘴上的一句话就是:C宏,万恶之首,错误的开端,应该被废弃。 请注意,我用了一句不敬的修饰语“水平不高不低的”。为什么这么说?因为水平低都插不上话,都在在静静地听老前辈布道呢。水平高的,比如Bane Stroustrup老人家,也只是说若干种场合下C++语言能够提供比C macro更好的解决方案,而没有完全否定C macro的价值。但是话就怕传来传去,一传就走样。久而久之,就被传成上面那句话。其实说来也很好笑:java程序员经常说java比C++好,说C++手动释放内存老搞内存泄漏;C++程序员便反驳说,那是你水平低不会用。但 阅读全文
posted @ 2011-05-10 19:55 tungli 阅读(318) 评论(0) 推荐(0)
摘要:zero 坐在餐桌前,机械的重复“夹菜 - 咀嚼 - 吞咽”的动作序列,脸上用无形的大字写着:我心不在焉。在他的对面坐着 Solmyr ,慢条斯理的吃着他那份午餐,维持着他一贯很有修养的形象 ——— 或者按照 zero 这些熟悉他本质的人的说法:假象。“怎么了 zero ?胃口不好么?”,基本填饱肚子之后,Solmyr 觉得似乎应该关心一下他的学徒了。“呃,没什么,只是 …… Solmyr ,C++ 为什么不支持垃圾收集呢?(注:垃圾收集是一种机制,保证动态分配了的内存块会自动释放,Java 等语言支持这一机制。)”Solmyr 叹了口气,用一种平静的眼神盯着 zero :“是不是在 BB 阅读全文
posted @ 2011-01-05 17:08 tungli 阅读(1879) 评论(1) 推荐(4)
摘要:#define用法以及#define和typedef区别1.简单的define定义#define MAXTIME 1000 2.define的“函数定义”define可以像函数那样接受一些参数,如下#define max(x,y) (x)>(y)?(x):(y);因为这个“函数”没有类型检查,就好像一个函数模板似的,没有模板那么安全就是了。但是... 阅读全文
posted @ 2010-12-02 21:47 tungli 阅读(8509) 评论(0) 推荐(2)
摘要:这几天一直在笔试,有人遇到这类题了。翻了翻标准,总结一下:但这种机制和C#略有不同当决定调用哪个函数时,如果是虚函数,那么取决于指针所指向的对象的类型。如果是非虚函数,那么取决于指针的类型ISO/IEC 14882:2003 page 174[Note: the interpretation of the call of a virtual function depends on the type... 阅读全文
posted @ 2010-10-09 16:30 tungli 阅读(845) 评论(0) 推荐(0)
摘要:第7条:要将多态基类的析构函数声明为虚函数现在考虑一个计时器的问题,我们首先创建一个名为TimeKeeper的基类,然后在它的基础上创建各种派生类,从而用不同手段来计时。由于计时有很多方式,所以这样做是值得的:class TimeKeeper {public:TimeKeeper();~TimeKeeper();...};class AtomicClock: public TimeKeeper {... 阅读全文
posted @ 2010-10-09 16:16 tungli 阅读(480) 评论(0) 推荐(0)
摘要:C++类对象内存结构   首先介绍一下C++中有继承关系的类对象内存的布局:在C++中,如果类中有虚函数,那么它就会有一个虚函数表的指针__vfptr,在类对象最开始的内存数据中。之后是类中的成员变量的内存数据。   对于子类,最开始的内存数据记录着父类对象的拷贝(包括父类虚函数表指针和成员变量)。 之后是子类自己的成员变量数据。   对于子类的子类,也是同样的原理。但是无论继承了多少个子类,对象... 阅读全文
posted @ 2010-10-09 13:06 tungli 阅读(403) 评论(0) 推荐(0)
摘要:1.句柄是什么? 在windows中,句柄是和对象一一对应的32位无符号整数值。对象可以 映射到唯一的句柄,句柄也可以映射到唯一的对象。2.为什么我们需要句柄? 更准确地说,是windows需要句柄。windows需要向程序员提供必要地编程接口 ,在这些接口中,允许程序员访问、创建和销毁对象。但是,出于封装地考虑,windows并不想向程序员返回指针。指针包含了太多的信息。首先指针给出 了对象存储... 阅读全文
posted @ 2010-08-29 00:10 tungli 阅读(233) 评论(0) 推荐(0)
摘要:关于什么是句柄,以前曾经有人这样比喻: “牧童遥指杏花村” 牧童的手就是指针;杏花村的旗子就是句柄。 MSDN上关于句柄handle的描述:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dngenlib/html/msdn_handles1.asp1、 句柄是一种指向指针的指针。我们知 道,... 阅读全文
posted @ 2010-08-29 00:09 tungli 阅读(198) 评论(0) 推荐(0)
摘要:想当年 初学核编 , 阅读第三章的内核对象的时候跟看天书没什么感觉 死命在想到底内核对象 , 句柄是个什么东西 干嘛用的 于是我们工作室的老大就对我说 这篇看过就过了 学到后面你自然会明白的 我想也是 , 很多时候感觉学东西的确是这样 暂时看不懂的先放着 过段时间再看回来就恍然大悟了 . 我前段时间又看了下核编的第三章 唯一的收获就是能够大概了解到 hanle 这个所谓的索引的作用了 . 我也跟... 阅读全文
posted @ 2010-08-29 00:08 tungli 阅读(680) 评论(0) 推荐(0)