-
深入浅出MFC文档/视图架构之框架(1)
所属栏目:[大数据] 日期:2021-07-06 热度:166
? 从前文可知,在MFC中,文档是真正的数据载体,视图是文档的显示界面,对应同一个文档,可能存在多个视图界面,我们需要另外一种东东来将这些界面管理起来,这个东东就是框架。 MFC创造框架类的初衷在于:把界面管理工作独立出来!框架窗口为应用程序的用户[详细]
-
深入浅出MFC文档/视图架构之文档模板(2)
所属栏目:[大数据] 日期:2021-07-06 热度:178
? 2.文档模板类CDocTemplate 文档模板类CDocTemplate是一个抽象基类(这意味着不能直接用它来定义对象而必须用它的派生类),它定义了文档模板的基本处理函数接口。对一个单文档界面程序,需使用单文档模板类CSingleDocTemplate,而对于一个多文档界面程序,[详细]
-
深入浅出MFC文档/视图架构之相互关系(2)
所属栏目:[大数据] 日期:2021-07-06 热度:59
2. 消息流动机制 在基于"文档/视图"架构的MFC程序中,用户消息(鼠标、键盘输入等)会先发往视图,如果视图未处理则会发往框架窗口。所以,一般来说,消息映射宜定义在视图中。另外,如果一个应用同时拥有多个视图而当前活动视图没有对消息进行处理则消息也[详细]
-
C++中extern “C”含义深层探索
所属栏目:[大数据] 日期:2021-07-06 热度:69
? 1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属[详细]
-
探索C++的秘密之:重载,覆盖,和隐藏
所属栏目:[大数据] 日期:2021-07-06 热度:105
成员函数被重载的特征: (1)相同的范围(在同一个类中); (2)函数名字相同; (3)参数不同; (4)virtual关键字可有可无。 ==================================================== 这几个概念都有一个共同点:函数名称相同,所以不免让人混淆,大致的区[详细]
-
寻找链表中间节点-一种高效的算法
所属栏目:[大数据] 日期:2021-07-06 热度:71
?2008-09-19 20:55 链表(特别是单链表)的定位是链表这种数据结构的一个软肋所在,定位某一个元素你 就不得不通过遍历的方式获得。如果要寻找一个单链表的中间节点,普通的方法就是先遍历得到链表的长度,然后再通过长度遍历得到链表的中间节点。当然有一些[详细]
-
c++基本概念
所属栏目:[大数据] 日期:2021-07-06 热度:163
1 编程基础1.1 基本概念 1. const 的理解: const char*,char const*,char*const 的区别问题几乎是 C++ 面试中每次 都会有的题目。 事实上这个概念谁都有只是三种声明方式非常相似很容易记混。 Bjarne 在他的 The C++ Programming Language 里面给出过一个助[详细]
-
转载一篇理解堆和栈区别的好文章
所属栏目:[大数据] 日期:2021-07-06 热度:54
?2008-09-15 13:37 此文章虽然是面向C/C++程序员写得,但是对咱们Java程序员还是很有帮助的。 堆和栈的区别 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局[详细]
-
C++-namespace命名空间(转)
所属栏目:[大数据] 日期:2021-07-06 热度:162
? 很多初学C++的人,对于C++中的一些基本的但又不常用的概念感到模糊,命名空间(name space)就是这样一个概念 C++中采用的是单一的全局变量命名空间。在这单一的空间中,如果有两个变量或函数的名字完全相同,就会出现冲突 。 当然,你也可以使用不同的名字[详细]
-
c++类实例大小
所属栏目:[大数据] 日期:2021-07-06 热度:159
初学者在学习面向对象的程序设计语言时,或多或少的都些疑问,我们写的代码与最终生编译成的代码却 大相径庭,我们并不知道编译器在后台做了什么工作.这些都是由于我们仅停留在语言层的原因,所谓语言层就是教会我们一些基本的语法法则,但不会告诉我们为什[详细]
-
C++特性探寻-多态和虚函数
所属栏目:[大数据] 日期:2021-07-06 热度:147
?2008-09-19 20:18 ???? 在C++中,多态是通过虚函数实现的。 基类如果把一个函数声明为虚的(virtual),就表明继承类可以覆盖(override)这个 函数(从而表现不同的行为,呈现出多态性)。 对于每一个有虚函数的具体类(或者继承类),可认为有一个与之关联[详细]
-
C++中,什么是纯虚函数,什么是抽象类,什么是虚析构函数
所属栏目:[大数据] 日期:2021-07-06 热度:148
? 纯虚函数:当一个类被定义后,有一些函数往往还不能确定,这个时候为了访止乱写一个制成错误,就要用纯虚函数。没有函数体的函数。 抽象类:一个类中如果存在了纯虚函数,那么这个类只是为了描述一个大的概念,世界上不会存在真的它。 一个小例子,你不知[详细]
-
VS2005C++连接数据库
所属栏目:[大数据] 日期:2021-07-06 热度:193
2008-06-15 06:40 #include afxwin.h #include stdio.h #import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("EOF","adoEOF") void main() { CString sql; ::CoInitialize(NULL); _RecordsetPtr PRs("ADODB.Recordset"); _[详细]
-
CString/string/char *比较详解1
所属栏目:[大数据] 日期:2021-07-06 热度:126
? ( 一) 概述 string 和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中; CString (typedef CStringTTCHAR,StrTraitMFCTCHAR CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和A[详细]
-
C++中内存的分配
所属栏目:[大数据] 日期:2021-07-06 热度:68
? 有一个结构A 下面是构造A的内存空间方法: 1)A* a = new A; 2)A* a = (A*)malloc(2*sizeof(A));?? 3)A* a = new A; a = (A*)malloc(2*sizeof(A)); 4)A a; 这四者的内存分配是否如下: 1)在堆里分配一个sizeof(A)大小的内存空间,a指向该内存空间首址。 2)[详细]
-
深入浅出MFC文档/视图架构之文档模板(4)
所属栏目:[大数据] 日期:2021-07-06 热度:183
? 前文我们提到,由于MFC的设计者将CSingleDocTemplate和CMultiDocTemplate的行为未进行规范的区分,它对仅仅对应一个文档的CSingleDocTemplate也提供了所谓的GetFirstDocPosition、GetNextDoc遍历操作,所以基类CDocTemplate的SaveAllModified和CloseAllDocu[详细]
-
深入浅出MFC文档/视图架构之文档模板(3)
所属栏目:[大数据] 日期:2021-07-06 热度:112
? CDocTemplate类的AddDocument、RemoveDocument成员函数使得CDocument* pDoc参数所指向的文档归属于本文档模板(通过将this指针赋值给pDoc所指向CDocument对象的m_pDocTemplate成员变量)或脱离与本文档模板的关系: void CDocTemplate::AddDocument(CDocume[详细]
-
深入浅出MFC文档/视图架构之文档(2)
所属栏目:[大数据] 日期:2021-07-06 热度:151
打开文档的函数CDocument::OnOpenDocument完成的工作包括如下几步: (1)打开文件对象; (2)调用DeleteDontents(); (3)建立与此文件对象相关联的CArchive对象; (4)调用应用程序文档对象的Serialize()函数; (5)关闭CArchive对象、文件对象。 BOOL[详细]
-
extern用法详解
所属栏目:[大数据] 日期:2021-07-06 热度:178
1 基本解释 extern可以置于变量或者 函数 前,以标示变量或者 函数 的定义在别的文件中,提示编译器遇到此变量和 函数 时在其他模块中寻找其定义。 另外,extern也可用来进行链接指定。 2 问题:extern 变量 在一个源文件里定义了一个数组:char a[6]; 在另[详细]
-
String的构造函数,拷贝构造函数、析构函数和赋值函数
所属栏目:[大数据] 日期:2021-07-06 热度:150
? 已知类String的原型为: class String { public: String(const char *str = NULL); // 普通构造函数 String(const String other); // 拷贝构造函数 ~ String(void); // 析构函数 String operate =(const String other); // 赋值函数 private: char *m_data;[详细]
-
C++基本特性(2)
所属栏目:[大数据] 日期:2021-07-06 热度:159
2008-09-19 20:06 1.继承。 父类与子类: #include iostream.h class Animal { public: void eat() { cout"Animal eat"endl; } void breathe() { cout"Animal breathe"endl; } void sleep() { cout"Animal sleep"endl; } }; class Fish : public Animal { };[详细]
-
为什么要把父类的析构函数定义成虚函数?
所属栏目:[大数据] 日期:2021-07-06 热度:77
?2008-09-19 20:48 问:为什么要把父类的析构函数定义成虚函数? 答:否则子类的析构函数可以未被调用,具体代码如下: class A { public: A(){TRACE("A()/n");}; ~A(){TRACE("~A()/n");}; }; class B : public A { public: B(){TRACE("B()/n");}; ~B(){TRACE("~B([详细]
-
C/C++ 程序设计员应聘常见面试试题深入剖析(3)
所属栏目:[大数据] 日期:2021-07-06 热度:72
试题 5:编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh” 函数头是这样的: //pStr是指向以'/0'结尾的字符串的指针 //steps是要求移动的n void LoopMove ( char * pStr,int steps ) {[详细]
-
C/C++中函数指针的含义
所属栏目:[大数据] 日期:2021-07-06 热度:128
函数存放在内存的代码区域内,它们同样有地址,我们如何能获得函数的地址呢? 如果我们有一个int test(int a)的函数,那么,它的地址就是函数的名字,这一点如同数组一样,数组的名字就是数组的起始地址。 定义一个指向函数的指针用如下的形式,以上面的test[详细]
-
#pragma 的作用
所属栏目:[大数据] 日期:2021-07-06 热度:135
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机[详细]