- 博客(21)
- 资源 (3)
- 收藏
- 关注
原创 C++从零开始(十二)——何谓面向对象编程思想
C++从零开始(十二) ——何谓面向对象编程思想 前面已经说明了C++中最重要的概念——类,并且介绍了大部分和类相关的知识,至此,已经可以开始做些编程方面比较高级的应用——设计程序,而不再只是将算法变成代码。要说明如何设计程序,有必要先了解何谓编程思想。编程思想 编程,即编写程序,而之前已经说过,程序就是方法的描述,那么编程就是编写方法的描述。我知道如何到人民公园
2004-08-15 16:53:00
5879
16
原创 C++从零开始(十一)下篇——类的相关知识
C++从零开始(十一)下篇 ——类的相关知识 由于篇幅限制,本篇为《C++从零开始(十一)》的下篇,讨论多态性及一些剩下的问题。 虚的含义 本文的中篇已经介绍了虚的意思,就是要间接获得,并且举例说明电视机的频道就是让人间接获得电视台频率的,因此其从这个意义上说是虚的,因为它可能操作失败——某个频道还未调好而导致一片雪花。并且说明了间接的好处,就是只用编好一段代码(按5频道),
2004-07-28 02:57:00
2636
4
原创 C++从零开始(十一)中篇——类的相关知识
C++从零开始(十一)中篇 ——类的相关知识 本文关于虚函数的论述有一处严重错误,关于此错误已在本文的评论中说明,对此造成的不便,在此深感抱歉。 由于篇幅限制,本篇为《C++从零开始(十一)》的中篇,说明多重继承、虚继承和虚函数的实现方式。多重继承 这里有个有趣的问题,如下: struct A { long a, b, c; char d; };
2004-07-27 12:52:00
2654
原创 C++从零开始(十一)上篇——类的相关知识
C++从零开始(十一)上篇 ——类的相关知识 前面已经介绍了自定义类型的成员变量和成员函数的概念,并给出它们各自的语义,本文继续说明自定义类型剩下的内容,并说明各自的语义。 权限 成员函数的提供,使得自定义类型的语义从资源提升到了具有功能的资源。什么叫具有功能的资源?比如要把收音机映射为数字,需要映射的操作有调整收音机的频率以接收不同的电台;调整收音机的音量;打开和关闭收音机
2004-07-25 17:20:00
3255
3
原创 C++从零开始(十)——何谓类
C++从零开始(十) ——何谓类 前篇说明了结构只不过是定义了内存布局而已,提到类型定义符前还可以书写class,即类型的自定义类型(简称类),它和结构根本没有区别(仅有一点小小的区别,下篇说明),而之所以还要提供一个class,实际是由于C++是从C扩展而成,其中的class是C++自己提出的一个很重要的概念,只是为了与C语言兼容而保留了struct这个关键字。不过通过前面括号中所
2004-07-25 17:18:00
2772
6
原创 C++从零开始(九)——何谓结构
C++从零开始(九) ——何谓结构 前篇已经说明编程时,拿到算法后该干的第一件事就是把资源映射成数字,而前面也说过“类型就是人为制订的如何解释内存中的二进制数的协议”,也就是说一个数字对应着一块内存(可能4字节,也可能20字节),而这个数字的类型则是附加信息,以告诉编译器当发现有对那块内存的操作语句(即某种操作符)时,要如何编写机器指令以实现那个操作。比如两个char类型的数字
2004-07-17 14:32:00
3194
6
原创 C++从零开始(八)——C++样例一
C++从零开始(八) ——C++样例一 前篇说明了函数的部分实现方式,但并没有说明函数这个语法的语义,即函数有什么用及为什么被使用。对于此,本篇及后续会零散提到一些,在《C++从零开始(十二)》中再较详细地说明。本文只是就程序员的基本要求——拿得出算法,给得出代码——给出一些样例,以说明如何从算法编写出C++代码,并说明多个基础且重要的编程概念(即独立于编程语言而存在的概念)。 由算
2004-07-14 14:55:00
3181
7
原创 C++从零开始(七)——何谓函数
C++从零开始(七) ——何谓函数 本篇之前的内容都是基础中的基础,理论上只需前面所说的内容即可编写出几乎任何只操作内存的程序,也就是本篇以后说明的内容都可以使用之前的内容自己实现,只不过相对要麻烦和复杂许多罢了。 本篇开始要比较深入地讨论C++提出的很有意义的功能,它们大多数和前面的switch语句一样,是一种技术的实现,但更为重要的是提供了语义的概念。所以,本篇开始将
2004-07-11 21:42:00
3717
13
原创 C++从零开始(六)——何谓语句
C++从零开始(六) ——何谓语句 前面已经说过程序就是方法的描述,而方法的描述无外乎就是动作加动作的宾语,而这里的动作在C++中就是通过语句来表现的,而动作的宾语,也就是能够被操作的资源,但非常可惜地C++语言本身只支持一种资源——内存。由于电脑实际可以操作不止内存这一种资源,导致C++语言实际并不能作为底层硬件程序的编写语言(即使是C语言也不能),不过各编译器厂商都提供了自己的嵌
2004-07-07 20:20:00
2785
10
原创 C++从零开始(五)——何谓指针
C++从零开始(五) ——何谓指针 (本文由于为初次书写,思考不全,容易引起概念混乱,不建议阅读,请另参看《指针及其语义和运用》) 本篇说明C++中的重中又重的关键——指针类型,并说明两个很有意义的概念——静态和动态。数组 前面说了在C++中是通过变量来对内存进行访问的,但根据前面的说明,C++中只能通过变量来操作内存,也就是说要操作某块内存,就必须先
2004-07-07 20:18:00
3363
6
原创 C++从零开始(四)——赋值操作符
C++从零开始(四) ——赋值操作符 本篇是《C++从零开始(二)》的延续,说明《C++从零开始(二)》中遗留下来的关于表达式的内容,并为下篇指针的运用做一点铺垫。虽然上篇已经说明了变量是什么,但对于变量最关键的东西却由于篇幅限制而没有说明,下面先说明如何访问内存。 赋值语句 前面已经说明,要访问内存,就需要相应的地址以表明访问哪块内存,而变量是一个映射,因此变量名就相当于一
2004-07-07 20:16:00
2941
9
原创 C++从零开始(三)——何谓变量
C++从零开始(三) ——何谓变量 本篇说明内容是C++中的关键,基本大部分人对于这些内容都是昏的,但这些内容又是编程的基础中的基础,必须详细说明。 数字表示 数学中,数只有数值大小的不同,绝不会有数值占用空间的区别,即数学中的数是逻辑上的一个概念,但电脑不是。考虑算盘,每个算盘上有很多列算子,每列都分成上下两排算子。上排算子有2个,每个代表5,下排算子有4个,每个代表1(这
2004-07-07 20:14:00
3321
7
原创 C++从零开始(二)——何谓表达式
C++从零开始(二) ——何谓表达式 本篇是此系列的开头,在学英语时,第一时间学的是字母,其是英语的基础。同样,在C++中,所有的代码都是通过标识符(Identifier)、表达式(Expression)和语句(Statement)及一些必要的符号(如大括号等)组成,在此先说明何谓标识符。标识符 标识符是一个字母序列,由大小写英文字母、下划线及数字组成,用于标识。
2004-07-07 20:12:00
3285
2
原创 C++从零开始(一)——何谓编程
C++从零开始(一) ——何谓编程 引言 曾经有些人问我问题,问得都是一些很基础的问题,但这些人却已经能使用VC编一个对话框界面来进行必要的操作或者是文档/视界面来实时接收端口数据并动态显示曲线(还使用了多线程技术),却连那些基础的问题都不清楚,并且最严重的后果就是导致编写出拙劣的代码(虽然是多线程,但真不敢恭维),不清楚类的含义,混杂使用各种可用的技术来达到目的(连用异常代替选择语
2004-07-07 20:09:00
5080
24
原创 COM样例(二)——样例结构设计
COM样例(二)——样例结构设计 本文为《COM样例》系列文章的第二篇,说明样例的结构,解释COM的编程思想,并帮助理解样例代码。样例目标 欲给一个公司做一个信息管理系统,也就是公司中所有部门的信息可以被输入电脑,并可进行分布式查询,即总经理可随时查询最新的订单情况和出货情况。由于使用COM作为此信息管理系统的基架,可以很容易的解决分布式问题,并且由于COM对安全的
2004-05-19 13:18:00
1548
1
原创 COM深入理解(下)——方法参数类型为CRuntimeClass*、void*等
COM深入理解(下) ——方法参数类型为CRuntimeClass*、void*等 本文上篇已经说明了类对象实际是一个结构实例,并且为了实现进程间传递类对象指针以达到引用的目的,需要为此类专门编写一个代理类,并在传递时例示(即实例化)其一个对象以实现代理对象。而此代理类必定分成两部分,即一部分的成员函数专门在客户进程被调用,另一部分专门在组件进程被调用以实现进程间的数据传递进而
2004-05-01 21:25:00
1971
1
原创 COM样例(三)——组件端代码
COM样例(三) ——组件端代码 本文为此系列文章的重点,前面设计的接口都只是辅助性质,与COM线程模型没有一点关系。由于客户和和组件实现的接口IModule、IModuleSite等都包有界面的传递,出于利用MFC的界面包装功能而都使用MFC来实现,故全部运行在STA套间中,并可使得组件的窗口亦使用客户端主线程来派送消息。 假设调用远程组件的方法以实现业务逻辑,由于
2004-05-01 21:21:00
1595
原创 COM深入理解(上)——方法参数类型为CRuntimeClass*、void*等
COM深入理解(上) ——方法参数类型为CRuntimeClass*、void*等 经常见到论坛上有问如何传递void*或一个自定义类,如:class CA; CA*等。本文就COM的运作方式说明如何传递一自定义类对象的指针,并澄清MIDL的作用,以说明其并不是必须的。注意,本文所说的自定义类型传递与自动化技术(基于IDispatch)中的自定义结构的传递不是同一个概念,没有任
2004-04-28 22:53:00
1949
1
原创 COM样例(四)——客户端代码
COM样例(四) ——客户端代码 本文为此系列文章的最后一篇,罗列客户端的源代码。客户端使用MFC实现,其中的框架类CMainFrame实现了IModuleSite、IErrorReport和ICompanyInfo,而另一个窗口包装类CTaskManager实现ITaskManager,并由CMainFrame聚合它以表现出CMainFrame实现了ITaskManager。
2004-04-26 11:52:00
2384
26
原创 COM样例(一)——《COM线程模型》基础篇
COM样例(一) ——《COM线程模型》基础篇 我曾经写了一篇《COM线程模型》,受到一些好评,但也有部分人觉得其有些深,希望能提供一些基础点的文章。本系列文章是《COM线程模型》这篇文章的样例,提供一个简单的稍完整的例子以帮助理解前面文章中的内容。本文是此系列的第一篇,讲解《COM线程模型》中出现过的我以为可能需要说明的基础概念,在后继的文章中说明样例的结构,并给出相关各部分代码,以注
2004-04-26 10:57:00
2361
1
原创 MFC界面包装类(多线程时成员函数调用的断言失败)
MFC界面包装类 ——多线程时成员函数调用的断言失败 经常在论坛上看到如下的问题:DWORD WINAPI ThreadProc( void *pData ) // 线程函数(比如用于从COM口获取数据){ // 数据获取循环 // 数据获得后放在变量i中 CAbcDialog *pDialog = reinterpret_cast( pData );
2004-03-29 10:39:00
2256
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人