自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

chenzhen1213的专栏

知识沉淀存储

  • 博客(41)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 catch(…)

catch关键字是用来定义catch block的,它后面带一个参数,用来与异常对象的数据类型进行匹配。注意catch关键字只能定义一个参数,因此每个catch block只能是一种数据类型的异常对象的错误处理模块。如果要想使一个catch block能抓获多种数据类型的异常对象的话,怎么办?C++标准中定义了一种特殊的catch用法,那就是” catch(…)”。

2014-12-31 15:34:26 637

转载 指针使用中的注意事项

一.在定义指针的时候注意连续声明多个指针时容易犯的错误,例如int * a,b;这种声明是声明了一个指向int类型变量的指针a和一个int型的变量b,这时候要清醒的记着,而不要混淆成是声明了两个int型指针。二.要避免使用未初始化的指针。很多运行时错误都是由未初始化的指针导致的,而且这种错误又不能被编译器检查所以很难被发现。这时的解决办法就是尽量在使用指针的时候定义它,如果早定义的话一定要记得

2014-12-31 14:30:15 1946

原创 指针与引用

引用与指针的差别,指针可以操纵两个实体,一个是指针值,一个是指向的值,因此指针可以改变关联的实体,即指向的实体。而引用只能操纵一个实体。引用定义时必须初始化,这个是它与指针根本不同的地方。一旦引用诞生,就确定了它与一个实体的联系,这个联系是打不破的,直到引用自身的灭亡。指针变量分配等同于整型变量大小的空间,引用不分配空间。常量指针定义  const 类型*指针常量定义  类型* c

2014-12-31 14:18:50 277

转载 拷贝构造函数和赋值函数

每个类只有一个赋值函数.由于并非所有的对象都会使用拷贝构造函数和赋值函数,程序员可能对这两个函数有些轻视。请先记住以下的警告,在阅读正文时就会多心:1.如果不主动编写拷贝构造函数和赋值函数,编译器将以“位拷贝”的方式自动生成缺省的函数。倘若类中含有指针变量,那么这两个缺省的函数就隐含了错误。以类String的两个对象a,b为例,假设a.m_data的内容为“hello”,b.m_data的

2014-12-31 14:17:49 326

原创 操作符重载

通过操作符重载,能够针对类类型的操作数定义不同的操作符版本。eg:用移位操作符》和《进行输入和输出,用加法将两个字符串相加重载操作符是具有特殊名称的函数:保留字operator后接需定义的操作符符号

2014-12-30 17:15:11 316

原创 全局函数

全局函数就是可以被其他文件中函数调用,比如一个大型程序,由很多人来共同编写,每个人写的程序为一个文件全局函数就可以被另一个文件中的程序调用,声明函数时不管写没写extern都默认为全局函数,如果不想被其他人调用,可以用static来定义,就只能被本文件程序调用全局函数是定义在类外的函数,成员函数就是定义在类中的函数。全局的是不属于任何类和名字空间,所以 :: 前面

2014-12-30 17:01:20 529

原创 :与::

:是继承,在这表示调用这个构造函数之前先调用父类构造函数,CfgLog4cxxDialogImpl继承自QDialog::是在c++中是作用域运算符,CfgLog4cxxDialogImpl::CfgLog4cxxDialogImpl就是CfgLog4cxxDialogImpl类的构造函数作用域符号(::),表示后面的变量或函数是属于前面的类比如声明了一个类A,类A里声明了一个成员函数void

2014-12-30 16:56:37 428

原创 ->与 .

->是指针指向其成员的运算符 ->指针访问式 指针访问要确保指针效.是结构体的成员运算符struct A{ int a; int b;};A *point = malloc(sizeof(struct A));point->a = 1;A object;object.a = 1;用结构体定义了一个实体,那么这个实体要引用他里面的成员,就用.操作符,如果你用结

2014-12-30 14:14:41 447

原创 DLL与COM(3)

COM接口函数和DLL里封装的函数调用都是用LoadLibrary()函数调用的。但com的路径是通过注册表中的定义来查找的,而dll则是根据系统、本地路径来查找的。COM最后也可生成DLL,COM得先写进注册表,普通的DLL直接调用接口函数即可

2014-12-23 14:31:18 436

转载 DLL与COM(2)

COM和DLL的区别:1) dll是以函数集合的方式来调用的,是编程语言相关的,如:VC必须加上extern "C"。而COM是以interface的方式提供给用户使用的是一种二进制的调用规范,是与编程语言无关的。2) DLL只有DLL一种形式, 里面可任意定义函数无限制, 只能运行在本机上 ,而COM有DLL和EXE两种存在形式。3) COM所在的DLL中必须导出

2014-12-23 14:16:26 395

转载 组件 (Component)和对象(Object)之间的区别

组件是一个可重用的模块,它是由一组处理过程、数据封装和用户接口组成的业务对象(Rules Object)。组件看起来像对象,但不符合对象的学术定义。它们的主要区别是: 1)组件可以在另一个称为容器(有时也称为承载者或宿主)的应用程序中使用,也可以作为独立过程使用; 2)组件可以由一个类构成,也可以由多个类组成,或者是一个完整的应用程序; 3)组件为模块重用,而对象为代码重用。现在,比较

2014-12-23 14:11:57 1859

转载 DLL 与 COM(1)

1、COM组件以接口对功能分类,便于组织;DLL特别是大的DLL,函数一大堆,难以组织;    2、COM组件便于升级维护,功能扩充,只需添加接口就行;DLL升级困难,函 数不能随意改变;     3、COM创建调用有很好的安全性,DLL没有;    4、COM组件可轻松实现进程间调用,DLL很困难;     5、COM组件可轻松实现分布式调用,DLL不可能;     6、CO

2014-12-23 12:18:42 628

原创 WaitForSingleObjec(2)

这里你就要创建一个对象,这个对象有两个状态,我们约定,如果一个线程要写入文件之前就把这个对象状态变成0,写完之后把它变回1,那么另一个线程在写文件之前只要检测这个对象是不是为0就可以确定文件有没有被另一个线程在写入了。检测的过程就用WaitForSingleObject来操作,如果为1,WaitForSingleObject就和没这句话一样立刻执行下去了,如果那个对象是个0,那么WaitFor

2014-12-22 15:07:13 848

原创 WaitForSingleObjec(1)

WaitForSingleObject(hMutex,INFINITE);hMutex 为已创建的 互斥对象的句柄,一旦互斥对象处于有信号状态,则该函数返回。如果互斥对象始终处于无信号状态,即未通知状态,则函数一直等待。对象有两个状态比如我们称0和1,称什么一点也不重要,有信号和无信号就是相对的两个状态,没什么意义,你就认为一个状态是0另一个状态是1。在程序里如果加

2014-12-22 15:06:19 2810

原创 断言

assert(fin != NULL && fout != NULL); 是一个断言,在debug模式下,当fin或者fout其中一个为空时,程序就会被断下,弹出一个断言窗口,表示这两个变量中的一个或则两个为空,程序有异常。 下面的注释是说明fin这个变量必须是一个输入一个完整的文本,文本内容必须为字母断言常用在程序开发过程中,程序员不想写更多的异常处理代码,又想立即定位到异常的位

2014-12-22 14:48:04 422

原创 Format是CString类的一个成员函数

MFC程序中,使用CString来处理字符串是一个很不错的选择。CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的字符串。CString的Format方法给我们进行字符串的转换带来了很大的方便,比如常见的int、float和double这些数字类型转换为CString字符串只需一行代码就可以实现。VC中经常用到Format()来输出一个特定类型的变量到窗口上F

2014-12-22 14:38:14 543

原创 extern “C”

extern “C”在C++环境下使用C函数的时候,常常会出现编译器无法找到obj模块中的C函数定义,从而导致链接失败的情况,应该如何解决这种情况呢?答案与分析:C++语言在编译的时候为了解决函数的多态问题,会将函数名和参数联合起来生成一个中间的函数名称,而C语言则不会,因此会造成链接时找不到对应函数的情况,此时C函数就需要用extern “C”进行链接指定,这告诉编译器,请保持我的名

2014-12-19 15:04:04 325

原创 句柄

句柄是WINDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控件,位图,GDI对象等等。从数据类型上来看它只是一个32位(或64位)的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。在WINDOWS编程中会用到大量的句柄,比如:HIN

2014-12-19 14:52:37 375

原创 VC(2)

Compile菜单会编译当前的聚焦文件;Build菜单会编译和链接所有在项目中修改的文件;Build All会编译链接项目中所有文件,包括最近编译后没有修改过的文件;Batch Build用于包含有Debug和Release配置的项目;Clean会删除所有的中间和输出文件,因而项目目录下仅包含源文件;Debugger Remote Connection用于远程调试,即在一台机器

2014-12-19 14:42:18 331

原创 VC(1)

在DeveloperStudio下会生成多个文件去保存项目的所有信息:一个是以.DSW为扩展名的项目工作区文件,它包含项目中所有文件的名称、文件所在目录、编译器和连接器的选项以及项目工作的其它信息;以.DSP为扩展名的也是项目记录文件,.OPT是工作区选项文件,它包含DeveloperStudio的所有个人设置 -包括颜色、字体、工具栏、哪个文件被打开以及MDI窗口如何被定位和最新调试

2014-12-19 14:41:35 390

原创 指针与引用 指针常量与常量指针

1.差别:指针可以操纵两个实体,一个是制针值,一个是指向的值,一次指针可以改变关联的实体,即指向的实体。而引用只能操纵一个实体。2.引用定义时必须初始化,这是它与指针根本不同的地方。一旦引用诞生,就确定了它与一个实体的联系,这种联系是打不破的,直到引用自身的灭亡3.指针变量分配等同于整型变量大小的空间,引用不分配空间。4.常量指针定义 const  类型*  指向的对象是常量的指针

2014-12-19 14:18:28 2186

原创 模板

模板 是一种参数化的类或函数,即类的形态(成员、方法、布局等)或函数的形态(参数、返回值等)可以被参数改变。(模板把函数或类要处理的数据类型参数化,表现为参数的多态性,称为类属)模板用于表达逻辑结构相同,但具体数据元素类型不同的数据对象的通用行为函数模板的定义格式template   (){     }参数化类型名表又称模板参数表,多个表项用逗号

2014-12-19 14:13:42 377

原创 关于指针

指针理解清楚了,也是比较简单的!我觉得最重要的还是头脑中有内存的形像。指针是什么,说白了就是内存中存放着的不是实际数据,而是实际数据存放的地址。记住每次使用前都要分配内存给它,就是new一下。举两个例子来说明如果理解指针:/*#include void main(){ int *a; a = new int(); *a = 100; printf("%d",

2014-12-19 14:11:58 346

原创 SDK

简单的说,SDK是别人已经写好了一些函数,框架,类。你可以直接用别人写好的类。而Visual C++是一个编程工具。帮助你进行编译,调试,发布等等内容。调用SDK一般有以下几种方法: 直接安装SDK的.exe程序,安装后会自动嵌入到你的C++软件里。然后你新建C++程序后,直接引用就可以了。添加引用:Add -> Add Reference -> Select 你的SDK类库。

2014-12-19 14:08:36 458

原创 14分析5

10.希尔排序:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2   该方法实质上是一种分组插入方法。首先,第二个元素为 1,是整个序列中的最小元素,所以可知该希尔排序为从小到 大排序。然后考虑增量问题,若增量为 2,第 1+2 个元素 4 明显比第 1 个元素 9 要大,

2014-12-12 14:25:50 308

原创 14分析6

11.快速排序:快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。    假设要排序的数组是A[1]……A[N],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它的数都放到它

2014-12-12 14:15:16 326

转载 STL

是泛型程序设计:使用模板的程序设计就是泛型程序设计。面向对象程序设计:使用虚函数的程序设计MFC是微软公司创建的C++ 类库。而与之类似的是 STL 是模板库,只不过 STL是 ANSI/ISO 标准的一部分,而 MFC 只不过是微软的一个产品而已。也就是说STL是所有C++编译器和所有操作系统平台都支持的一种库,说它是一种库是因为,虽然STL是一种标准,也就是说对所有的编译器来说,提供给

2014-12-12 11:12:11 331

原创 14分析4

9.B树就是B-树,B+树是B树的一种变形B-树       是一种多路搜索树(并不是二叉的),一颗m阶的B-树,或为空树,或者:       1.定义任意非叶子结点最多只有M个儿子;且M>2;       2.根结点的儿子数为[2, M];       3.除根结点以外的非叶子结点的儿子数为[M/2, M];       4.每个结点存放至少M/2-1(取上整)和

2014-12-11 17:05:50 424

原创 14分析3

6.前缀编码的定义是在一个字符集中,任何一个字符的编码都不是另一个字符编码的 前缀。D 中编码 110 是编码 1100 的前缀,违反了前缀编码的规则7.按照拓扑排序的算法,每次都选择入度为 0 的结点从图中删去,此图中一开始只有 结点 3 的入度为 0;删掉 3 结点后,只有结点 1 的入度为 0;删掉结点 1 后,只有结点 4 的入度为 0;删掉 4 结点后,结点 2 和结点 6

2014-12-11 17:04:57 517

原创 14分析2

3.出队的操作是先从 A[end1]读数,然后 end1 再加 1。入队操作是先存数到 A[end2],然后 end2 再加1。若把 A[0]储存第一个元素,当队列初始时,入队操作是先把数据放到 A[0],然后 end2自增,即可知 end2 初值为 0;而 end1 指向的是队头元素,队头元素的在数组 A 中的下标为0,所以得知 end1 初值也为 0,可知队空条件为 end1==end

2014-12-11 16:52:16 349

原创 14分析1

1.内层循环条件 j对于嵌套循环,根 据乘法规则可知,该段程序的时间复杂度 T(n)=T1(n)*T2(n)=O(n)*O(log2n)=O(nlog2n)。2.中缀表达式转换为前缀或后缀表达式的一种手工做法,以上面给出的中缀 表达式为例:第一步:按照运算符的优先级对所有的运算单位加括号。 式子变成了:((a/b)+(((c*d)-(e*f))/g)) 第二步:转换为前缀或后缀

2014-12-11 14:53:30 416

原创 引用计数

在引用计数中,每一个对象负责维护对象所有引用的计数值。当一个新的引用指向对象时,引用计数器就递增,当去掉一个引用时,引用计数就递减。当引用计数到零时,该对象就将释放占有的资源。最直观的垃圾收集策略是引用计数。引用计数很简单,但是需要编译器的重要配合,并且增加了赋值函数 (mutator) 的开销(这个术语是针对用户程序的,是从垃圾收集器的角度来看的)。每一个对象都有一个关联的引用计数 —— 对该对

2014-12-08 17:03:28 445

转载 COM学习

Component  Object  Model (COM 组件对象模型 )1.COM是一种跨应用和语言共享二进制代码的方法,与C++ 不同它提倡源代码重用。eg:ATL 活动模板库,支持利用C++语言编写ASP代码以及其他ActiveX程序。通过活动模板库,可以建立COM组件,然后通过ASP页面中的脚本对COM对象进行调用。这种COM组件可以包含属性页、对话框等控件。源代码级重用虽然

2014-12-08 16:16:16 377

转载 COM快速入门

Component  Object  Model (COM 组件对象模型 )1.COM是一种跨应用和语言共享二进制代码的方法,与C++ 不同它提倡源代码重用。eg:ATL 活动模板库,支持利用C++语言编写ASP代码以及其他ActiveX程序。通过活动模板库,可以建立COM组件,然后通过ASP页面中的脚本对COM对象进行调用。这种COM组件可以包含属性页、对话框等控件。源代码级重用虽然

2014-12-08 16:00:48 411

原创 什么是COM组件

COM组件是以WIN32动态链接库(DLL)或可执行文件(EXE)形式发布的可执行代码组成。COM组件是遵循COM规范编写的COM组件是一些小的二进制可执行文件COM组件可以给应用程序、操作系统以及其他组件提供服务自定义的COM组件可以在运行时刻同其他组件连接起来构成某个应用程序COM组件可以动态的插入或卸出应用COM组件必须是动态链接的COM组件必须隐藏(封装)其内部

2014-12-08 15:55:26 395

原创 zuchengyuanli

三地址指令4条,单地址指令255条,零地址指令16条。设指令字长为12位.每个地址码长为3位。问能否以扩展操作码为其编码?如果其中单地址指令为254条呢?①不能用扩展码为其编码。∵指令字长12位,每个地址码占3位;∴三地址指令最多是2^(12-3-3-3)=8条, 现三地址指令需4条,∴可有4条编码作为扩展码,∴单地址指令最多为4×2^3×2^3=2^8=256条,现要求单地址指令255条,∴

2014-12-08 09:58:50 1438

原创 第四章总结1

9.new表达式:用于分配动态内存的表达式,C++使用new取代C语言的标准库函数malloc。new   type[n] ;;//new返回指向该数组第一个元素的指针。9.只有当指针指向同一个数组或其超出末端的位置时,指针的算术操作才有意义。10.ptrdiff_t在cstddef头文件中定义的与机器相关的有符号整型,该类型具有足够的大小存储两个指针的差值,这两个指针指向同一个可能的

2014-12-05 17:24:51 311

原创 第四章总结

1.迭代器和指针都能用于间接地访问所指向的对象,vector类型所包含的元素通过迭代器来操纵。类似的,指针则用于访问数组元素。2.C程序把指向以空字符结束的字符数组的指针视为字符串。在C++中,字符串字面值就是C风格字符串。网络程序中大量的安全漏洞都源于与使用C风格字符串和数组相关的缺陷。3.复合类型:使用其他类型定义的类型。数组、指针和引用都是符合类型。4.const  void

2014-12-05 17:11:48 379

原创 zuchengyuanli

1.一台字符显示器的VRAM中存放的是(显示字符的ASCII码)2.X、Y为定点二进制数,其格式为1位符号位,n位数值位。若用booth补码一位算法实现乘法运算,则最多需要做加法运算n次,移位n-1次。

2014-12-05 10:16:39 541

原创 多维数组 用typedef简化指针

都为数组转换而成的指针类型应是指向第一个内层数组的指针。int   ia[3][4];int   (*ip)[4]  = ia;.      //*ip是int[4]类型,即ip是一个指向含有四个元素的数组的指针。

2014-12-04 12:15:27 1558

数据结构算法实现(严蔚敏版配套实现程序)

数据结构算法实现(严蔚敏版配套实现程序)

2014-04-08

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除