摘要:
封装封装是一种把代码和代码所操作的数据捆绑在一起,使这两者不受外界干扰和误用的机制.封装可被理解为一种用做保护的包装器,以防止代码和数据被包装器外部所定义的其他代码任意访问.对包装器内部代码与数据的访问通过一个明确定义的接口来控制.封装代码的好处是每个人都知道怎样访问代码,进而无需考虑实现细节就能直接使用它,同时不用担心不可预料的副作用.在JAVA中,最基本的封装单元是类,一个类定义着将由一组对象所共享的行为(数据和代码).一个类的每个对象均包含它所定义的结构与行为,这些对象就好象是一个模子铸造出来的.所以对象也叫做类的实例.在定义一个类时,需要指定构成该类的代码与数据.特别是,类所定义的变量 阅读全文
摘要:
一、malloc()和free()的基本概念以及基本用法:1、函数原型及说明:void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。关于分配失败的原因,应该有多种,比如说空间不足就是一种。void free(void *FirstByte): 该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。2、函数的用法:其实这两个函数用起来倒不是很难,也就是malloc()之后觉得用够了就甩了它把它给free()了,举个简单例子:程序代码: c. 阅读全文
摘要:
相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加malloc/free。(2)在用法上也有所不同。函数malloc 的原型如下:void * malloc(size_t size);用malloc 申请一块长度为lengt 阅读全文
摘要:
通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。 在C++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。派生类的定义格式 单继承的定义格式如下: class <派生类名>:<继承方式><基类名> { <派生类新定义成员> }; 其中,<派生类名>是新定义的一个类的名字,它是从<基类名 阅读全文
摘要:
http://hi.baidu.com/chenponder/blog/item/22ab4938f09b77f0b311c7b7.html◎用法: func( Type para1, Type para2, Type para3, ... ) { /****** Step 1 ******/ va_list ap; va_start( ap, para3 ); //一定是要“...”之前的那个参数/****** Step 2 ******/ //此时ap指向第一个可变参数 //调用va_arg取得里面的值Type xx = va_arg( ap, Type );//Type一定要相同,如: 阅读全文
摘要:
Chapter 1在这句话 cout<<”hello”<<endl; 里,<<是一个操作符,它左边的操作数是一个ostream对象(在本例中为std::cout),运算的结果是左边的值,也就是还是cout,上面那句话等价于 (cout<<”hello”)<<endl;把std::endl写入ostream时,会输出一个换行,并刷新缓冲区。在用printf或是cout打log进行调试时,应该意识到缓冲区的存在,如果没有及时刷新的话,真正显示到屏幕上的时刻未必就是输出语句执行的时刻。Chapter 2表达式可以分为lvalue和rvalu 阅读全文
摘要:
1. 范围float和double的范围是由指数的位数来决定的。float的指数位有8位,而double的指数位有11位,分布如下:float:1bit(符号位) 8bits(指数位) 23bits(尾数位)double:1bit(符号位) 11bits(指数位) 52bits(尾数位)于是,float的指数范围为-127~+128,而double的指数范围为-1023~+1024,并且指数位是按补码的形式来划分的。其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。float的范围为-2^128 ~ +2^128,也即 阅读全文
摘要:
共有两种库:一种LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。一种LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。共有两种链接方式:动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅包含在运行时定位DLL函数的可执行代码所需的信息。静态链接使用静态链接库,链接器从静态链接库LIB获取所有被引用函数,并将库同代码一起放到可执行文件中。关于lib和dll的区别如下:(1)lib是编译时用到的,dll是运 阅读全文
摘要:
句柄详解Handle一、书上定义:<<Microsoft Windows 3 Developer''s Workshop>>(Microsoft Press,by Richard Wilton)在Windows环境中,句柄是用来标识项目的,这些项目包括:模块(module)、任务(task)、实例(instance)、文件(file)、内存块(block of memory)、菜单(menu)、控制(control)、字体(font)、资源(resource),包括图标(icon),光标 (cursor),字符串(string)等、GDI对象(GDI o 阅读全文
摘要:
1.插入排序插入排序逐个处理待排序的记录,每个新纪录与前面已排序的子序列进行比较,将它插入到子序列中正确的位置。void InsertSort(SqList &L){ for(int i=1;i<L.Len;i++) for(int j=i;(j>0)&& (L[j].key<L[j-1].key);j--) swap(L[j],L[j-1]);}最好情况?已按从小到大正序排列,不进入j--的内循环中,总的比较次数为n-1次,所以时间代价为O(n)。最坏情况?逆序排列,每次j的内循环移动到子序列的最前端,每次内循环次数为i,所以总的处理次数为∑i=O( 阅读全文