- 博客(18)
- 资源 (4)
- 收藏
- 关注
原创 OO思想:关于C++的接口类
作者: Crazii @ CSDNcrazii@sina.com 呵呵,本人是初学者,这边文章比较浅显,也只适合初学者.^_^ 多态是OO的一大特点.通常我们把只有纯虚函数的抽象类,叫做接口类(Interface Class),或者是协议(Protocol).习惯上类名会用大写I开头,但这不是必须的.比如下面的一个类声明.class IPool{public:
2009-03-13 00:38:00 1660
原创 深入分析虚析构函数
CRAZII @ CSDNfrom: 我自己的百度博客 http://hi.baidu.com/%CF%F4%CA%AE%C8%FD%C0%C9/blog/item/26f01108ac3dce37e9248889.html 析构函数何时该时虚拟的? 当你可能通过基类指针删除派生类对象时。 虚函数绑定到对象的类的代码,而不是指针/引用的类。如果基类
2009-02-24 15:40:00 861
原创 关于程序中的assert
作者: Crazii @ CSDN摘自我的百度博客: http://hi.baidu.com/%CF%F4%CA%AE%C8%FD%C0%C9/blog/item/687d1af44fdbfbe67709d73b.htmlassert在debug模式下是很有用的,可以比较方便的发现错误.assert是个宏,至于这个宏的定义可以去看看头文件了.而在release版本下面,assert会被
2009-07-01 10:16:00 929
原创 DOS下万年历TC源代码
CRAZII@CSDN 这个好像是大二时写的..用的TC(!....) 没有注释...以前发在MSN SPACE 上的.最近整理硬盘的时候发现已经从硬盘上删除了..所以在这发一份..省得以后再也找不到了.重新看了一下运行效果,字符界面上下左右键可以改年月,空格是跳转年份./* Xiaofeng @2005.10.25 *//* simple Calendar */#include #
2009-02-24 16:01:00 1151
原创 const member function can return non-const type member vars
CRAZII@CSDN常量成员函数可以返回一个非常量类型的成员变量.之前对这个没有注意.class foo; //assume this class is already defined.class bar{private: class foo* p_foo;public: //compared with: const clas
2009-02-24 15:59:00 921
原创 DLL导出实例化的模板类
因为模板是在编译的时候根据模板参数实例化的,实例化之后就像一个普通的类(函数),这样才有对应的二进制代码;否则,没有模板参数,那么编译器就不知道怎么生成代码,所以生成的DLL就没有办法导出模板了.但是根据MSDN的描述,可以导出模板类的实例化后的代码(注意:这里不是指实例化模板类的一个对象),比如 template class singleton,那么可以导出singleton
2009-02-24 15:57:00 3600 2
原创 编程实现Windows下重启网卡(网络链接)
CRAZII@CSDN 简单介绍一下重启网卡的步骤.1.使用SetupDiGetClassDevs函数,获得设备信息列表2.SetupDiEnumDeviceInfo,枚举设备信息{3.SetupDiGetDeviceRegistryProperty(hDevInfo,&DevInfoData,SPDRP_CLASS,...,...)得到设备类型,如果类型是"N
2009-02-24 15:55:00 3000
原创 C Runtime 链接库不匹配导致全局静态对象没有析构
用VC8编译方案,之前连接的时候,出现Libcmt 和其他一些C的实时运行库冲突,没有重视.但后来才发现那些全局对象根本没有析构.比如,在Debug模式下,一个子工程使用静态链接库(MTd),另一个使用动态库(MDd),则最后连接在一起时,会出现一大堆警告:库冲突.而且程序运行结束之后,全局对象根本没有析构(在析构函数中下断点).最后将C链接库统一之后,全局静态对
2009-02-24 15:52:00 963
原创 tchar相关的小技巧
在使用了tchar之后,std中有些类型并没有t类型,于是自己添加上类似的定义#ifdef UNICODEnamspace std{static wistream& tcin = wcin;static wostream& tcout = wcout;static wostream& tcerr = wcerr;static wostream& tclog = wclog;typed
2009-02-24 15:35:00 734
原创 Unix,C的创建者的忏悔
翻译整理:pigprince在前不久举行的一次关于计算机产业的发布会上,Ken Thompson,Dennis Ritchie和Brian Kernighan承认了由他们创建的Unix操作系统和C语言是来源于20年前的一个精心炮制的愚人节游戏!Thompson是在不久以前在UnixWorld软件开发论坛上说的这番话:“在1969年,AT&T刚刚完成一
2009-02-24 15:34:00 1355 3
原创 分析placement new
作者: Crazii @ CSDN转载请说明出处 1.简单说明 通常我们先分配一块内存空间,然后可以反复使用用placemnet new 来将对象创建在这个内存块上,从而减少new时内存分配的开销,提高效率. 笔者认为placement new 还有另一个用处,就是可以将对象创建在指定的内存上.(!-_-,这本来就是placemnet new 本分的工作),比如系统的内存有
2008-11-24 10:56:00 934
原创 编写自己的内核打印函数
原创文章,转载写明出处作者Crazii @ CSDN我看了minix的内核printf函数之后,发现它里面的goto有语句...我就读不下去了,于是自己写了一个.kprintf首先要了解的就是printf的变参.这得从c调用规则讲起.回顾一下c(cdecl)调用规则(vc里面__cdecl关键字,MASM里面的.model c)除了命名要加下划线之外,还有函数的调用:参数是从右至左入栈
2008-09-25 13:42:00 1184
原创 容器的类型相关性和无关性
可能这个问题无关紧要,但是我还是想说说自己的看法. Author: Crazii @ CSDN 迭代器的类型跟容器类型相关.但是,容器的类型参数(模板参数)有很多,其中有些是跟容器和迭代器的使用无关的.例如std::map>的迭代器,与std::map>的迭代器,理论上是可以通用的,因为迭代器跟容器的排序比较细节无关,它只与类型相关.容器本身也该如此,将内部的细节隐藏.因此我个人
2008-09-24 21:16:00 1054
原创 使用Visual Studio2005进行C和汇编的混合编程
因为VS2005已经集成了MASM(可以直接build),所以可以很方面的使用IDE来编程了.嘎嘎~~建立一个空工程,添加一个新C++源文件,内容如下:#include #include //extern "C" 表示使用C编译命名规则,而不使用C++的. extern "C" { extern const char szASM[]; //
2008-09-19 01:00:00 2455 3
原创 编写自己的操作系统
NGOS是Not Good OS的缩写。虽然我为它想出很多名字,比如tinyOS或者zealOS等等,但是很不幸,我google一下发现已经有这些个名字了。索性就把自己的OS叫做NG...NGOS是保护模式下的OS,因为是学习linux0.11的引导代码写的,所以从它的引导和加载过程,可以看出linux的影子。不过与NGOS有自己的loader,并能够在FAT32文件系统下引导运行。这是仿照wi
2008-09-16 14:34:00 1383
原创 自定义Map容器 comparator
因为STL map内部使用的是红黑树.map默认的比较器有Less,Greater等等,在查找一个值时,不能立刻找到与该元素值相等的元素,而是要遍历到树的叶节点,记录不小于(不大于)该值的元素,最后再做一次比较确定是否相等.因为我们可以自定义比较器,比如string的比较,CEGUI中就用stringFastLess的仿函数(Functor),先比较字符串的长度,长度相同时再比较内容.
2008-09-04 16:32:00 1593 1
原创 [学习笔记]在windows下编译内核[大杂烩]
最近在做系统引导和实模式-保护模式切换.模仿早期linux的方法,把32位二进制镜像加载到物理地址0x00000000处,覆盖实模式下用的IVT.通常,像这种工作,需要一个虚拟机,比如Virtual PC或者Bochs来调试.而编译呢,GCC,也是个好东东.~ 在windows下,可以使用MinGW GCC或者是cygwin.笔者使用的是MinGW-GCC由于之前真的没有使用过GCC的那些
2008-03-16 12:00:00 1363 4
原创 使用windows的Internet连接共享功能
如果已经装了双网卡,通常的方法是使用一个代理软件,比如winproxy,经过简单的配置之后,就可以作为代理服务器,为局域网做Internet代理了~这里想说的是另一种方法,不使用第三方软件.打开网络链接,在连接入Internet的那个网卡上,点击右键选择[属性],然后选择高级(advanced)TAB页,在 [Internet连接共享] 组合框里,把"允许其他网络用户通过这台电脑连接到I
2008-03-16 11:08:00 2422 1
并行化游戏引擎的设计(Designing a Parallel Game Engine)中文版PDF
2009-02-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人