C/C++特殊技巧
wangwang123654
这个作者很懒,什么都没留下…
展开
-
memset与ZeroMemory的区别
ZeroMemory是微软的SDK提供的,memset属于C Run-time Library, 所以ZeroMemory只能用于Windows系统,memset可用于别的系统。 ZeroMemory是一个宏,只是用于把一段内存的内容置零,内部是用 memset实现的,memset可将内存置成别的字符。如果你的程序是Win32程序而且不想连接c运行时库,那就用ZeroMemory,如果需要跨平台,原创 2009-12-10 10:55:00 · 253 阅读 · 0 评论 -
typeid获取类型信息
在面向对向中,我们时常会遇到一种情况:一个基类类型的指针或引用想知道它具体是哪种子类型。格式:typeid(type),这里的type即可是变量,也可是类型名。因此这里可进行相等性判断。typeid(type).name()将返回具体的类型字符串,对于类类型,并且包含一个或多个虚拟函数,返回的类型是指针所指真正对象类型。 这里一定要区分指针和引用,指针和类类型。如*p和&r,t原创 2009-12-10 10:56:00 · 189 阅读 · 0 评论 -
C++中虚析构函数的作用
我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类: class ClxBase{public: ClxBase() {}; virtual ~ClxBase() {}; virtual void DoSomething() { cout "Do something in转载 2009-12-10 10:50:00 · 249 阅读 · 0 评论 -
C语言中的malloc、free、new、delete的关系和区别
malloc、free是C里分配和释放堆内存的库函数。new、delete是C++分配和释放堆内存的操作符。不要混用(malloc分配的内存要用free释放,new分配的内存要用delete释放) 在C++里尽量使用new和delete,因为new会调用构造函数,delete会调用析构函数,而malloc和free不会做这个动作转载 2009-12-10 10:51:00 · 372 阅读 · 0 评论 -
类型转换:dynamic_cast 与static_cast的区别
一个动态转换,一个是静态转换。一般情况下使用static_case 就可以了。 同时,这个只有在高版本的C++编译器中才能识别。 dynamic_cast是试探映射,如dynamic_castpB意思是“我希望它是A*,并打算要求它是”。它通常被称为类层次的动态导航。 而static_cast通常可用于类层次的静态导航,无映射变换,窄化变换(会丢失信息)等等,static_ca原创 2009-12-10 10:53:00 · 209 阅读 · 0 评论 -
解决VS2008中生成C/C++项目时遇到“生成‘rc.exe’时出错”
太倒霉了,昨天电脑重装了,又重装了一次VS2008,昨天下午一直在装,装完以后编译一个OGRE小程序发现,出现这样的错误,每次重装VS都会出现错误: 生成‘rc.exe’时出错 最后终于找到了解决方案: 解决步骤: 1、运行VS2008安装程序。 2、在“选择要安装的功能”这一步时,依次展开“语言工具”——“Visual C++”——“Visual C++原创 2009-12-17 09:31:00 · 440 阅读 · 0 评论