- 博客(23)
- 资源 (5)
- 收藏
- 关注
转载 DLL动态链接库编程入门之五:MFC扩展DLL
MFC扩展DLL的内涵为MFC的扩展,用户使用MFC扩展DLL就像使用MFC本身的DLL一样。除了可以在MFC扩展DLL的内部使用MFC以外,MFC扩展DLL与应用程序的接口部分也可以是MFC。我们一般使用MFC扩展DLL来包含一些MFC的增强功能,譬如扩展MFC的CStatic、CButton等类使之具备更强大的能力。 使用Visual C++向导生产MFC扩展DLL时,MFC向导会自
2013-09-12 22:14:33
968
转载 DLL动态链接库编程入门之四:MFC规则DLL(下)
我们照样可以在EXE程序中隐式调用MFC规则DLL,只需要将DLL工程生成的.lib文件和.dll文件拷入当前工程所在的目录,并在RegularDllCallDlg.cpp文件(上一节中图5所示对话框类的实现文件)的顶部添加: #pragma comment(lib,"RegularDll.lib") void ShowDlg(void); 并将void
2013-09-12 22:13:42
1115
转载 DLL动态链接库编程入门之三:MFC规则DLL(上)
上一节中讲解了非MFC DLL,本节将介绍如何创建MFC规则DLL及使用MFC规则DLL的方法。 一、MFC规则DLL概述 MFC规则DLL的概念体现在两方面: (1)它是MFC的 “是MFC的”意味着可以在这种DLL的内部使用MFC; (2)它是规则的 “是规则的”意味着它不同于MFC扩展DLL,在MFC规则DLL的内部虽然可以使用M
2013-09-12 22:12:24
2591
转载 DLL动态链接库编程入门之二:非MFC DLL
上一节中讲解的是DLL概论及其调试和查看,本节将为大家详解非MFC DLL的相关内容。 1、一个简单的DLL 上一节给出了以静态链接库方式提供add函数接口的方法,接下来我们来看看怎样用动态链接库实现一个同样功能的add函数。 如图1,在VC++中new一个Win32 Dynamic-Link Library工程dllTest。注意不要选择MFC AppWi
2013-09-12 22:11:36
891
转载 DLL动态链接库编程入门之一:DLL概论及其调试和查看
比较大的应用程序都是由很多模块组成的,这些模块彼此协作,以完成整个软件系统的工作。其中可能存在一些模块的功能较为通用,在构造其他软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序EXE 文件中,会产生一些问题。一是增加了应用程序的大小,这样会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;另外,在编写大的EXE 程序时,每次修改重建时都
2013-09-12 21:24:05
859
原创 强制类型转换
关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和 const_cast。下面对它们一一进行介绍。 I
2013-06-17 21:24:35
489
转载 浅议 Dynamic_cast 和 RTTI
对于问题要较真,在解决这个问题中会学到很多,远远超过自己期望,锻炼思维,享受这个过程。问题: Static_cast 与 Dynamic_cast的区别来自书本上的解释: 用 static_cast ( expression ) 1. static_cast(expression) The static_castlong, int->short etc.
2013-06-17 21:20:12
492
转载 AUTODESK的面试题
近一年以来,AUTODESK的面试题在网上是闹的沸沸扬扬,作为一个名企,这是可以理解的,况且其面试题质量也是不错的。抽一些闲暇时间,把网上传的比 较多的70道题简单的解答了一遍,不为别的,只为再熟悉一下在大学学过的一些基础知识。希望对大家有用。当然,这只是我的个人解答,有什么不对的或者需要 补充的,大家尽管提上来,好的话我加上去的。。。 1. 在类的普通成员函数中调用虚函数
2013-06-17 17:02:22
946
原创 类所占的内存空间(代码示例)
代码如下:#include #include using namespace std;/* * 带有数据成员的基类 */struct CBaseClass1{ CBaseClass1( size_t i ) : m_val( i ) {} size_t m_val;};/* * 虚拟继承体系 */struct CSub
2013-06-17 16:41:00
544
转载 类(空类/虚基类等)占内存的空间
一、真空类class CNull{};长度:1内存结构:??评注:长度其实为0,这个字节作为内容没有意义,可能每次都不一样。 二、空类class CNull2{public: CNull2(){printf("
2013-06-17 15:46:26
783
转载 C++虚函数表
C++ 虚函数表解析 陈皓http://blog.youkuaiyun.com/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,R
2013-06-17 14:48:34
464
转载 复制构造函数(拷贝构造函数)
也许很多C++的初学者都知道什么是构造函数,但是对复制构造函数(copy constructor)却还很陌生。对于我来说,在写代码的时候能用得上复制构造函数的机会并不多,不过这并不说明复制构造函数没什么用,其实复制构造函数能解决一些我们常常会忽略的问题。 为了说明复制构造函数作用,我先说说我们在编程时会遇到的一些问题。对于C++中的函数,我们应该很熟悉了,因为平常经常使用;对于
2013-06-17 08:35:20
495
转载 explicit构造函数
按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p ); // 用C风格的字符串p作为初始化值//…}String s1 = “hello”; //OK 隐式转换,等价于String s1 = String(“hello”
2013-06-16 13:48:12
369
转载 C++中的空类,默认产生哪些类成员函数?
答:class Empty{ public: Empty(); // 缺省构造函数 Empty( const Empty& ); // 拷贝构造函数 ~Empty(); // 析构函数 Empty& operator=( const Empty& ); // 赋值运算符 Empty* operator&();
2013-06-16 10:46:56
327
原创 编程题目,找规律,绘制矩阵。
矩阵的规律是从首坐标开始顺时针依次增大~~~,下面是函数,MaxN可以自行改变,本例选择10#define MaxN 10void Fun(int (*a)[MaxN],int n){int m=1,i,j;for(i=0;i{for(j=0;j{if(a[i][j]==0)a[i][j]=m++;}for(j=i+1;j{if(a[j][n
2013-06-16 08:41:30
614
转载 C++ 智能指针详解
C++ 智能指针详解一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scope
2013-06-15 14:30:55
425
原创 extern "C"的用法解析
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处
2013-06-14 14:32:42
403
原创 C++运算符的优先级
优先级操作符描述例子结合性1()[]->.::++--调节优先级的括号操作符数组下标访问操作符通过指向对象的指针访问成员的操作符通过对象本身访问成员的操作符作用域操作符后置自增操作符后置自减操作符(a + b) / 4;array[4] = 2;ptr->age = 34;obj.age = 34;
2013-06-14 13:59:10
380
原创 堆栈内存分配与内存池内存分配的区别
堆栈内存分配情况下,当分配内存的函数返回时,这块内存被自动释放。这个属性是由堆栈的工作方式所决定的,它可以保证不会出现内存泄漏。但这种方式存在缺点,由于当函数返回时被分配的内存丢失,因而它不能用于存储那些回传给调用程序的数据。
2013-05-27 15:35:12
1160
原创 结构名和数组名的不同之处
结构名是一个标量。和其他所有标量一样,当结构名在表达式中作为右值使用时,它表示的是存储在结构中的值。当它作为左值使用时,它表示结构存储的内存位置。但是,数组名是一个指针常量,当它在表达式中作为右值使用时,它的值时指向数组第一个元素的指针。由于其是指针标量,它不能作为左值使用。
2013-05-27 14:14:42
1322
原创 栈和堆的区别
1.1内存分配方面:堆:一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式是类似于链表。可能用到的关键字如下:new、malloc、delete、free等等。栈:由编译器(Compiler)自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。1.2申请方式方面:堆:需要程序员自己申请,并指明大小。
2013-05-15 08:27:27
334
转载 笔试智力题~~~
1.如何快速找出一个32位整数的二进制表达里有多少个"1"?用关于"1"的个数的线性时间? 答案1(关于数字位数线性):for(n=0; b; b >>= 1) if (b & 1) n++; 答案2(关于"1"的个数线性):for(n=0; b; n++) b &= b-1;2.一个大小为N的数组,所有数都是不超过N-1的正整数。用O(N)的时间找出重复的那个数(假设只有
2013-05-14 15:27:55
743
转载 二叉查找树
1、序 详细实现了二叉查找树的各种操作:插入结点、构造二叉树、删除结点、查找、 查找最大值、查找最小值、查找指定结点的前驱和后继2、二叉查找树简介 它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树
2013-05-13 16:33:09
389
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人