Welcome 微信登录

首页 / 软件开发 / C++

C++指针和数组

C++指针和数组

C++指针和数组2011-04-18数组的指针即整个数组在内存中的起始地址,而数组元素的指针是数组中某一元素所占存储单元的地址。利用指针法引用数组元素能使目标程序质量高、占内存少、运行速度快。C++语言中规定:数组名就代表数组首地址,也就是数组第0号元素的地址。如int a[10];int *p;p=&a[0];/*与p=a,是等价的*/p+i或a+i就是a[i]元素的存储地址,即它们都指向数组的第i号元素a[i]。所以*(p+i)或*(a+i)就...
MFC教程(5)-- MFC对象的创建(1)

MFC教程(5)-- MFC对象的创建(1)

MFC教程(5)-- MFC对象的创建(1)2010-03-25MFC对象的创建前面几章介绍了MFC的核心概念和思想,即介绍了MFC对Windows对象的封装方法和特点;MFC对象的动态创建、序列化;MFC消息映射机制。现在,考查MFC的应用程序结构体系,即以文档-视为核心的编程模式。学习本章,应该弄清楚以下问题:MFC中诸多MFC对象的关系:应用程序对象,文档对象,边框窗口对象,文档边框窗口对象,视对象,文档模板对象等。MFC对象的创建和销毁:由什么对象...
C++中的虚函数的实现方法

C++中的虚函数的实现方法

C++中的虚函数的实现方法2011-04-18软件屋学习 C++ 的同志不知道有没有和我一样遇到过这样的困惑:C++中的虚函数到底怎么实现的?在各种继承关系中,虚函数表的结构到底是什么样的?曾经我是很想当然,可是后来在使用ATL的过程中,我发现并不是我想的那样。大家知道,利用C++语言本身的特性进行COM编程当然是很方便的事,但是你就得随时随地都知道那虚函数表里头到底是些什么东西。讲C++语法的书没有义务告诉你C++产生的虚函数表是什么样的,这就是头痛的所...
MFC教程(5)-- MFC对象的创建(2)

MFC教程(5)-- MFC对象的创建(2)

MFC教程(5)-- MFC对象的创建(2)2010-03-25从这些图中可以看到何时、何处调用了什么消息处理函数和虚拟函数,这些函数用来作了什么事情。必要的话,程序员可以在派生类覆盖它们。在创建工作完成之后,进行初始化,使用文档对象的数据来更新视和显示窗口。至此,本节描述了MFC的SDI程序从分析命令行到创建或打开文件的处理过程,文档对象已经动态创建。总结如下:命令行分析→应用程序的FileNew→文档模板的OpenDocumentF...
MFC教程(6)-- 应用程序的退出

MFC教程(6)-- 应用程序的退出

MFC教程(6)-- 应用程序的退出2010-03-25一个Windows应用程序启动之后,一般是进入消息循环,等待或者处理用户的输入,直到用户关闭应用程序窗口,退出应用程序为止。例如,用户按主窗口的关闭按钮,或者选择执行系统菜单“关闭”,或者从“文件”菜单选择执行“退出”,都会导致主窗口被关闭。当用户从“文件”菜单选择执行“退出”时,将...
MFC教程(7)-- MFC的DLL

MFC教程(7)-- MFC的DLL

MFC教程(7)-- MFC的DLL2010-03-26一般的,在介绍Windows编程的书中讲述DLL的有关知识较多,而介绍MFC的书则比较少地提到。即使使用MFC来编写动态链接库,对于初步接触DLL的程序员来说,了解DLL的背景知识是必要的。另外,MFC提供了新的手段来帮助编写DLL程序。所以,本节先简洁的介绍有关概念。DLL的背景知识静态链接和动态链接当前链接的目标代码(.obj)如果引用了一个函数却没有定义它,链接程序可能通过两种途径来解决这种从外...
红黑树的实现源码

红黑树的实现源码

红黑树的实现源码2011-04-21 cppblog.com converse最近因为要给ccache加入红黑树的支持, 找出来曾经实现的代码作为参考, 这才发现原来 的实现都是有问题的,也怪我的测试用例写的不好, 仅仅对插入操作进行了测试, 我向所有因 为阅读了这份代码而造成困惑的朋友表示道歉.这次重新实现, 所有的代码推倒重新编写, 参考了linux内核中红黑树的实现算法, 并且 对测试用例进行了加强,希望这是最后一个对红黑树算法的修订版本./*---...
MFC教程(8)-- MFC的进程和线程

MFC教程(8)-- MFC的进程和线程

MFC教程(8)-- MFC的进程和线程2010-03-26Win32的进程和线程概念进程是一个可执行的程序,由私有虚拟地址空间、代码、数据和其他操作系统资源(如进程创建的文件、管道、同步对象等)组成。一个应用程序可以有一个或多个进程,一个进程可以有一个或多个线程,其中一个是主线程。线程是操作系统分时调度分配CPU时间的基本实体。一个线程可以执行程序的任意部分的代码,即使这部分代码被另一个线程并发地执行;一个进程的所有线程共享它的虚拟地址空间、全局变量和操...
time_t和DATE之间的相互转化

time_t和DATE之间的相互转化

time_t和DATE之间的相互转化2011-04-21 VC知识库 周星星两者的差别:time_t是整型,存储着至1970-1-1 00:00:00的时差(秒数)(UTC时间)DATA是浮点型,整数部分存储着至1899-12-30 00:00:00的时差(天数)(本地时间), 小数部分存储着时分秒。(BTW:DATA可以表示基点之前的时间,time_t不可以)本算法只是想说明两者之间转化是很easy的,不需要MFC的支持,不需要“晕倒 &rd...
MFC教程(9)-- MFC的进程和线程(1)

MFC教程(9)-- MFC的进程和线程(1)

MFC教程(9)-- MFC的进程和线程(1)2010-03-26MFC定义了多种状态信息,这里要介绍的是模块状态、进程状态、线程状态。这些状态可以组合在一起,例如MFC句柄映射就是模块和线程局部有效的,属于模块-线程状态的一部分。模块状态这里模块的含义是:一个可执行的程序或者一个使用MFC DLL的DLL,比如一个OLE控件就是一个模块。一个应用程序的每一个模块都有一个状态,模块状态包括这样一些信息:用来加载资源的 Windows实例句柄、指向当前CWi...
C/C++的常见误区

C/C++的常见误区

C/C++的常见误区2011-04-211. C++虽然主要是以C的基础发展起来的一门新语言,但她不是C的替代品,不是C的升级 ,C++和C是兄弟关系。没有谁比谁先进的说法,更重要 的一点是C和C++各自的标准委员会是 独立的,最新的C++标准是C++98,最新的C标准是C99.因此也没有先学C再说C++的说法,也不 再(注意这 个"不再")有C++语法是C语法的超集的说法。2. C++/CLI和C# 是微软的,它们与C和C++没有任何...
MFC教程(9)-- MFC的进程和线程(2)

MFC教程(9)-- MFC的进程和线程(2)

MFC教程(9)-- MFC的进程和线程(2)2010-03-26下面以一个动态链接到MFC DLL的单模块应用程序为例,说明这些对象的创建过程。当第一次访问状态信息时,比如使用 AfxGetModuleState得到模块状态,导致系列创建过程的开始,如图9-7所示。首先分析语句pState=_afxThreadState。如果_afxThreadData、线程状态和模块状态还没有创建,该语句可以导致这些数据的创建。pState声明为CNoTrackObj...
加载COM的方式

加载COM的方式

加载COM的方式2011-04-21通常我们都是使用CoCreateInstance或CoGetClassObject获得接口,再通过接口访问他的成员方法。在C++支持下,从来不会有任何问题。但是如果使用Win32模式,纯粹C风格编程,就会出现问题了。通过研究我发现其实上述访问方式本身就存在问题。标准的访问方式,如D3D一样,接口的初始化必须在Com提供的API基础上完成。COM设计者需要提供一个API,像DLL的导出函数一样,供给外部程序调用。具体设计:...
MFC教程(10)-- 内存分配方式和调试机制

MFC教程(10)-- 内存分配方式和调试机制

MFC教程(10)-- 内存分配方式和调试机制2010-03-26M内存分配内存分配函数MFCWin32或者C语言的内存分配API,有四种内存分配API可供使用。Win32的堆分配函数每一个进程都可以使用堆分配函数创建一个私有的堆──调用进程地址空间的一个或者多个页面。DLL创建的私有堆必定在调用DLL的进程的地址空间内,只能被调用进程访问。HeapCreate用来创建堆;HeapAlloc用来从堆中分配一定数量的空间,HeapAlloc分配的内存是不能移...
C++的默认构造函数

C++的默认构造函数

C++的默认构造函数2011-04-211、每个类必须有一个构造函数,否则没法创建对象;2、若programer没有提供任何构造函数,则C++提供一个默认的构造函数,该默认构造函 数是无参构造函数,它仅负责创建对象,不做任何初始化的工作;3、只要programer定义了一个构造函数(不管是无参还是有参构造),C++就不再提供默 认的默认构造函数。即如果为类定义了一个带参的构造函数,还想要无参构造函数,就必须 自己定义;4、与变量定义类似,在用默认构造函数创...
MFC教程(11)-- MFC下的文件类

MFC教程(11)-- MFC下的文件类

MFC教程(11)-- MFC下的文件类2010-03-26文件操作的方法使用Visual C++编程,有如下方法进行文件操作:(1)使用标准C运行库函数,包括fopen、fclose、fseek等。(2)使用Win16下的文件和目录操作函数,如lopen、lclose、lseek等。不过,在Win32下,这些函数主要是为了和Win16向后兼容。(3)使用Win32下的文件和目录操作函数,如CreateFile,CopyFile,DeleteFile,Fi...
<< 241 242 243 244 245 246 247 248 249 250 >>