
C/C++
文章平均质量分 92
tjxy_20081
这个作者很懒,什么都没留下…
展开
-
C, C++中的 typedef struct 与struct
typedef struct tagNode { char *pItem; pNode pNext; } *pNode; 新结构建立的过程中遇到了pNext域的声明,类型是pNode,要知道pNode表示的是类型的新名字,那么在类型本身还没有建立完成的时候,这个类型的新名字也还不存在,也就是说这个时候编译器根本不认识pNode。 解决这个问题的方法有多种: 1)、原创 2013-04-26 11:15:41 · 232 阅读 · 0 评论 -
malloc用法
malloc用法 需要包含头文件: #include 'stdlib.h' 函数声明(函数原型): void *malloc(int size); 说明:malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。 从函数声明上可以看出。malloc 和 ne转载 2013-04-21 19:02:44 · 281 阅读 · 0 评论 -
动态二维数组new,typedef的几个陷阱,数组名与指针
二维数组new小结 1. A (*ga)[n] = new A[m][n]; ... delete []ga; 缺点:n必须是已知 优点:调用直观,连续储存,程序简洁(经过测试,析构函数能正确调用) 2. A** ga = new A*[m]; for(int i = 0; i ga[i] = new A[n]; ... for(int i原创 2013-04-17 21:47:54 · 341 阅读 · 0 评论 -
C++中析构函数定义成虚函数的原因
为什么标准C++建议将虚构函数定义成虚函数,下面就来探讨这个问题。 #include class Base { public: Base() {data = new char[64]; } ~Base(){delete [] data;} private: char *data; }; class BaseEx: public Base转载 2013-05-05 21:17:41 · 233 阅读 · 0 评论 -
宏定义中## 连接符与# 符的含义
一般由任意字符都可以做形参,但以下情况会出错: STR())这样,编译器不会把“)”当成STR()的参数。 STR(,)同上,编译器不会把“,”当成STR的参数。 STR(A,B)如果实参过多,则编译器会把多余的参数舍去。(VC++2008为例) STR((A,B))会被解读为实参为:(A,B),而不是被解读为两个实参 #define WIDE(str原创 2013-04-22 16:37:11 · 310 阅读 · 0 评论 -
重载(overload), 重写(override), 重定义(redefine) 及多态性,虚函数总结
一、重载(overload) 指函数名相同,但是它的参数表列个数或顺序,类型不同。但是不能靠返回类型来判断。 (1)相同的范围(在同一个作用域中即同一类中) ; (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无。 (5)返回值可以不同; 特殊情况:若某一个重载版本的函数前面有virtual修饰,则表示它是虚函数。但它也是属于重载的一个版本原创 2013-09-24 22:42:42 · 499 阅读 · 0 评论 -
指针和引用的区别
(1)引用总是指向一个对象,没有所谓的 null reference .所有当有可能指向一个对象也由可能不指向对象则必须使用 指针. 由于C++ 要求 reference 总是指向一个对象所以 reference要求有初值. String & rs = string1; 由于没有所谓的 null reference 所以所以在使用前不需要进行测试其是否有值.,而使用指针则需转载 2013-09-24 20:08:51 · 254 阅读 · 0 评论