2011年11月21日
摘要: 笔者觉得这3个new有点意思,有时候我也被搞懵了,这些创造者难不成觉得C++过于简单,所以搞一点含糊的术语出来。这次总结一下,以便再懵的时候有个参考。有错的地方请不吝赐教,多谢先!简单点吧:1. new operator,即熟悉的new操作符,用它从堆中分配一个对象,并且初始化。CHeapObject* p=new CHeapObject(name);既然是操作符,那么它的行为就和其他+-*/操作符一样,是由C++语言定义的,不能改变,即使通过重载的方式也不能改变。C++规定了new操作符的行为:分配一个合适的空间容纳CHeapObject对象,然后调用其构造函数初始化对象。2. operat 阅读全文
posted @ 2011-11-21 17:13 wanghetao 阅读(430) 评论(0) 推荐(0) 编辑
摘要: 有关placementnew 作者: hzh5121. placementnew的含义placementnew是重载operatornew的一个标准、全局的版本,它不能够被自定义的版本代替(不像普通版本的operatornew和operatordelete能够被替换)。void*operatornew(size_t,void*p)throw(){returnp;}placementnew的执行忽略了size_t参数,只返还第二个参数。其结果是允许用户把一个对象放到一个特定的地方,达到调用构造函数的效果。和其他普通的new不同的是,它在括号里多了另外一个参数。比如:Widget*p=newWi. 阅读全文
posted @ 2011-11-21 16:43 wanghetao 阅读(9924) 评论(0) 推荐(4) 编辑
摘要: 看書的時候,一直看到" POD" 這個關鍵字,可能是我從來沒有好好把一本C++的書看完吧(還是眼睛自動忽略 orz),後來上網查了一下,在這邊分享一下好了..POD 是Plain Old Data的簡寫,是指一些系統的int, char, float、指標、array之類的資料型別,這應該蠻好想像的,就是C++ compiler提供的內建型別,比較特別的是類別與結構,如果類別和結構帶有trivial constructor,也是POD的一種class vector3D{ float x, y, z; } ; struct size{ int width, height; } 阅读全文
posted @ 2011-11-21 16:04 wanghetao 阅读(2204) 评论(0) 推荐(0) 编辑
摘要: 模版的特化与偏特化 Partial Template Specialization能够让你在模板(Template)的所有可能的实体中特化出一组子集. 1.模板的特化(template specialization): 例如,定义如下的一个模板: template<class Window, class Controller> class Widget { ... 泛化实现代码 ... }; 然后你可以像下面那样明确地加以特化: template<> //注意:template后面的尖括号中不带任何内容; class Widget<ModalDialog, MyC 阅读全文
posted @ 2011-11-21 15:38 wanghetao 阅读(3634) 评论(0) 推荐(0) 编辑
摘要: 1.memmove函数原型:void *memmove(void *dest, const void *source, size_t count)返回值说明:返回指向dest的void *指针参数说明:dest,source分别为目标串和源串的首地址。count为要移动的字符的个数函数说明:memmove用于从source拷贝count个字符到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中。2.memcpy函数原型:void *memcpy(void *dest,const void *source,size_tcount);返 阅读全文
posted @ 2011-11-21 09:06 wanghetao 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 有的人爱用strcpy等标准ANSI函数,有的人爱用_tXXXX函数,有必要把来龙去脉搞清楚。 为了搞清这些函数,就必须理请几种字符类型的写法。char就不用说了,先说一些wchar_t。wchar_t是Unicode字符的数据类型,它实际定义在<string.h>里: typedef unsigned short wchar_t; 不能使用类似strcpy这样的ANSI C字符串函数来处理wchar_t字符串,必须使用wcs前缀的函数,例如wcscpy。为了让编译器识别Unicode字符串,必须以在前面加一个“L”,例如: wchar_t *szTest=L"This 阅读全文
posted @ 2011-11-21 08:51 wanghetao 阅读(18490) 评论(0) 推荐(0) 编辑
摘要: 什么是 non-trivial default constructor, non-trivial copy constructor, non-trivial assignment operator, non-trivial destructor? 阅读全文
posted @ 2011-11-21 08:40 wanghetao 阅读(147) 评论(0) 推荐(0) 编辑