创建和使用动态数组
摘要: 动态数组,顾名思义,就是可以动态分配长度的数组。在c语言中,数组的长度是固定的,而这种限制显然是很不灵活的。在c++中,数组有时候不用在编译时就知道长度,直到运行时才知道。与普通的数组变量不同,动态分配的数组将一直存在,直到程序显式的释放它为止。
阅读全文
posted @
2011-06-10 21:57 Carrie 阅读(211) |
评论 (0) 编辑
define的用法
摘要: 今天整理了一些#define的用法,与大家共享!
1.简单的define定义
#define MAXTIME 1000
一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写
if(i
编译器在处理这个代码之前会对MAXTIME进行处理替换为1000。
这样的定义看起来类似于普通的常量定义CONST,但也有着不同,因为define的定义更像是简单的文本替换,而不是作为一个量来使用,这个问题在下面反映的尤为突出。 阅读全文
posted @
2008-11-05 22:53 Carrie 阅读(1943) |
评论 (0) 编辑
深入C++的new
摘要: “new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结。
阅读全文
posted @
2008-11-05 13:52 Carrie 阅读(158) |
评论 (0) 编辑
指针的引用与正常指针 释放内存的另一例比较
摘要: 指针的引用与正常指针 释放内存的另一例比较
阅读全文
posted @
2008-11-04 16:17 Carrie 阅读(118) |
评论 (0) 编辑
More Effective C++:指针与引用的区别
摘要: 指针与引用看上去完全不同(指针用操作符’*’和’->’,引用使用操作符’.’),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢?
阅读全文
posted @
2008-11-04 15:44 Carrie 阅读(130) |
评论 (0) 编辑
stl容器学习总结
摘要: 一 迭代器(iterator)
迭代器:
迭代器是类似指针的对象,STL算法利用它们对存储在容器中的对象序列进行遍历。
5种类别:1、输入迭代器
2、输出迭代器
3、前向迭代器
4、双向迭代器
5、随机访问迭代器
阅读全文
posted @
2008-10-31 20:22 Carrie 阅读(200) |
评论 (0) 编辑
三十分钟掌握STL--作者Blog:http://blog.csdn.net/kary/
摘要: STL概述
STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常通用。例如,由于STL的sort()函数是完全通用的,你可以用它来操作几乎任何数据集合,包括链表,容器和数组。
阅读全文
posted @
2008-10-30 21:51 Carrie 阅读(250) |
评论 (0) 编辑
C++常见问题
摘要: 构造函数不能声明为虚函数的原因是:
解释一:所谓虚函数就是多态情况下只执行一个,而从继承的概念来讲,总是要先构造父类对象,然后才能是子类对象,如果构造函数设为虚函数,那么当你在构造父类的构造函数时就不得不显示的调用构造,还有一个原因就是为了防错,试想如果你在子类中一不小心重写了个跟父类构造函数一样的函数,那么你的父类的构造函数将被覆盖,也即不能完成父类的构造.就会出错.
解释二:虚函数的主要意义在于被派生类继承从而产生多态. 派生类的构造函数中, 编译器会加入构造基类的代码, 如果基类的构造函数用到参数, 则派生类在其构造函数的初始化列表中必须为基类给出参数, 就是这个原因.
析构函数设为虚函数的作用:
解释:在类的继承中,如果有基类指针指向派生类,那么用基类指针delete时,如果不定义成虚函数,派生类中派生的那部分无法析构。
阅读全文
posted @
2008-10-30 12:40 Carrie 阅读(188) |
评论 (0) 编辑
new delete, free malloc略谈
摘要: 首先应该知道malloc 和free是匹配的;new和delete是匹配的,他们不可以混淆。 malloc和new都申请空间,但是new是强类型的分配,会调用对象的构造函数初始化对象,而malloc仅分配内存空间但是不初始化。new 自适应类型,malloc需要强制转换new按类型进行分配,malloc需要指定内存大小对于对象来说free的确释放了对象的内存,但是不调用对象的析构函数。delete不仅释放对象的内存,并且调用对象的析构函数所以在对象中用free删除new创建的对象,内存就有可能泄露在delete内部仍调用了free
阅读全文
posted @
2008-10-30 10:41 Carrie 阅读(244) |
评论 (1) 编辑
Visual C++中对象的序列化与文件I/O研究(三)
摘要: 文件I/O
虽然使用CArchive类内建的序列化功能是保存和加载持久性数据的便捷方式,但有时在程序中需要对文件处理过程拥有更多的控制权,对于这种文件输入输出(I/O)服务的需求,Windows提供了一系列相关的API函数,并由MFC将其封装为CFile类,提供了对文件进行打开,关闭,读,写,删除,重命名以及获取文件信息等文件操作的基本功能,足以处理任意类型的文件操作。CFile类是MFC文件类的基类,支持无缓冲的二进制输入输出,也可以通过与CArchive类的配合使用而支持对MFC对象的带缓冲的序列化。
阅读全文
posted @
2008-10-26 20:08 Carrie 阅读(348) |
评论 (0) 编辑
Visual C++中对象的序列化与文件I/O研究(二)
摘要: 自定义持久类
为了使一个类的对象成为持久的,可以自定义一个持久类,将持久性数据的存储和加载的工作交由自定义类自己去完成。这种处理方式也更加符合面向对象的程序设计要求。可以通过下面几个基本步骤来创建一个能序列化其成员变量的自定义持久类:
1. 直接或间接从CObject类派生出一个新类。
2. 在类的声明部分包含MFC的DECLARE_SERIAL宏,该宏只需要将类名作为参数。
3. 重载基类的Serialize()函数,并添加对数据成员进行序列化的代码。
阅读全文
posted @
2008-10-26 20:06 Carrie 阅读(201) |
评论 (0) 编辑