随笔分类 -  C++

摘要:http://blog.csdn.net/weiqubo/article/details/6990700智能指针CComPtr 和 CComQIPtr1 简介ATL提供了2个智能指针的模板包装类,CComPtr<>和CComQIPtr<>,这两个类都在<atlbase.h>中声明。CComQIPtr<>包含了CComPtr<>的所有功能,因此我们可以完全用CComQIPtr<>来使用智能接口指针,唯一要说明的一点就是:CComQIPtr<>由于使用了运算符的重载功能,它会自动帮我们调用QueryInterfac 阅读全文

posted @ 2012-01-11 20:16 无忧consume 阅读(237) 评论(0) 推荐(0) |

摘要:http://blog.csdn.net/weiqubo/article/details/6990707静态库Lib和动态库Dll1.概论1.什么是静态连接库,什么是动态链接库 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了。但是若使用 DLL,该 DLL 不必被包含在最终 EXE 文件中,EXE 文件执行时可以“动态”地引用和卸载这个与 EXE 独立的 DLL 文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静 阅读全文

posted @ 2012-01-11 20:12 无忧consume 阅读(301) 评论(0) 推荐(0) |

摘要:double cur; sscanf(words[i].c_str(), "%lf", &cur); nums[i / 3][i % 3] = cur; 阅读全文

posted @ 2012-01-10 11:11 无忧consume 阅读(187) 评论(0) 推荐(0) |

摘要:大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解。原因是多方面的。大多数情况下,我们只停留在“使用”它,而不会想去“了解”它。因为它只是一个工具,我们宁可把更多的精力放在C++语言和软件设计上。我们习惯于这样一种“模式”:建立一个项目,然后写代码,然后编译,反反复复调试。但是,所谓:“公欲善其事,必先利其器”。如果我们精于VC开发环境,我们是不是能够做得更加游刃有余呢? 闲话少说。我们先来看一下VC的处理流程,大致分为两步:编译和连接。源文件通过编译生成了.obj文件;所有.obj文件和.lib文件通过连接生成.exe文件或.dll文件。下面,我们分别讨论这两个步骤的一些细节。.. 阅读全文

posted @ 2012-01-06 16:22 无忧consume 阅读(233) 评论(0) 推荐(1) |

摘要:C语言中sprintf()函数的用法sprintf函数的用法1、该函数包含在stdio.h的头文件中。2、sprintf和平时我们常用的printf函数的功能很相似。sprintf函数打印到字符串中,而printf函数打印输出到屏幕上。sprintf函数在我们完成其他数据类型转换成字符串类型的操作中应用广泛。3、sprintf函数的格式:int sprintf( char *buffer, const char *format [, argument,...] );除了前两个参数固定外,可选参数可以是任意个。buffer是字符数组名;format是格式化字符串(像:"%3d%6.2f 阅读全文

posted @ 2011-12-28 18:28 无忧consume 阅读(505) 评论(0) 推荐(0) |

摘要:以text为例#ifndef __TEST_H__ //一定要在最前#define __TEST_H__...#endif //一定要在最后防止重复包含错位,这样就可以在多个cpp文件中对.h文件中的方法实现 阅读全文

posted @ 2011-12-25 02:54 无忧consume 阅读(267) 评论(0) 推荐(0) |

摘要:(转)关于GlobalAlloc1. GlobalAlloc函数和new()的区别。1>new是标准的C++分配内存函数。GlobalAlloc是WIN下的API函数。2>new分配内存同时会调用类等对象的构造函数。GlobalAlloc不回。3>new分配的内存只能同进程使用,如(A进程new,B进程不能delete),GlobalAlloc能多进程使用,并删除。2. GlobalAlloc分配的内存需要释放么?所有动态内存分配都必须释放,GlobalAlloc分配的内存用GlobalFree进行释放。3. GlobalAlloc和HeapAlloc的关系GlobalAll 阅读全文

posted @ 2011-12-25 02:04 无忧consume 阅读(462) 评论(0) 推荐(0) |

摘要:(转)CloseHandle()和ExitThread()区别CloseHandle的功能是关闭一个打开的对象句柄,该对象句柄可以是线程句柄,也可以是进程、信号量等其他内核对象的句柄,而ExitThread的功能是终止一个线程,它所接受的参数是一个线程的退出码。通过调用CloseHandle可以告知系统,已经完成了对某一内核对象的操作,该函数首先检查调用进程的句柄表,来确认进程是否对该句柄所指向的对象有访问权,如果句柄无效则返回FALSE,如果有效,系统将得到该内核对象的数据结构的地址,把结构中的使用计数成员减1,如果计数变为0,则将从内核中释放该内核对象。如果计数还未到0,就意味着还有其他的 阅读全文

posted @ 2011-12-25 02:03 无忧consume 阅读(436) 评论(0) 推荐(0) |

摘要:ZeroMemory是微软的SDK提供的, memset属于CRun-timeLibrary, 所以ZeroMemory只能用于Windows系统,memset可用于别的系统。ZeroMemory是一个宏,只是用于把一段内存的内容置零,内部是用memset实现的,memset可将内存置成别的字符。 如果你的程序是Win32程序而且不想连接c运行时库,那就用ZeroMemory,如果需要跨平台,那就用memsetstrcpy原型:extern char *strcpy(char *dest,char *src);用法:#include <string.h>功能:把src所指由NULL 阅读全文

posted @ 2011-12-25 01:57 无忧consume 阅读(360) 评论(0) 推荐(0) |

摘要:C++中extern “C”含义深层探索1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。 2.从标准头文件说起 某企业曾经给出如下的一道面试题: 面试题 为什么标准头文件都有类似以下的结构?#ifndef __INCvxWorksh#def... 阅读全文

posted @ 2011-12-25 00:13 无忧consume 阅读(156) 评论(0) 推荐(0) |

摘要:在构造函数中调用虚成员函数,虽然这是个不很常用的技术,但研究一下可以加深对虚函数机制及对象构造过程的理解。这个问题也和一般直观上的认识有所差异。先看看下面的两个类定义。struct C180 { C180() { foo(); this->foo(); } virtual foo() { cout << "<< C180.foo this: " << this << " vtadr: " << *(void**)this << endl; }};struct C190 : pu 阅读全文

posted @ 2011-12-23 00:39 无忧consume 阅读(231) 评论(0) 推荐(0) |

摘要:有一个解决方案,有两个工程A,B。工程B中定义了一个类,在工程A的demo.cpp中引用该类,但是如果是#include "XX,h",则会出现“error LNK2019: 无法解析的外部符号”如果是#include "XX.cpp",则可以顺利编译通过。想来是因为引用 .h 文件导致找不到.cpp中的定义,而引用.cpp可以通过.cpp找到.h(.cpp有对.h的include)但是如果同在工程B下面,则#include "XX,h"也是正确的,它会自动关联到同名的(反正是对应的).cpp文件。在不同工程中应该如何引用呢?看见一种 阅读全文

posted @ 2011-12-22 00:17 无忧consume 阅读(251) 评论(0) 推荐(0) |

摘要:核心提示:静态链接库:lib中的指令被直接包含在最终生成的EXE文件中。 1.静态链接库与动态链接库区别: 静态链接库:lib中的指令被直接包含在最终生成的EXE文件中。 动态链接库:dll不必被包含在最终的EXE中,EXE文件执行时可以动态地引用和卸载DLL文件。 同时,静态链接库中不能再包含其他的动态链接库或静态库,而动态链接库中可以包含其他的动态或静态库。 2.VC++支持的DLL: DLL的编制与具体的编程语言及编译器无关,动态链接库随处可见,VC++支持三种DLL:非MFC动态库、MFC规则DLL和MFC扩展DLL。DLL导出函数(或变量、类)可供应用程序调用;DLL内部... 阅读全文

posted @ 2011-12-22 00:15 无忧consume 阅读(231) 评论(0) 推荐(0) |

摘要:http://msdn.microsoft.com/zh-cn/library/ms235636(v=vs.80).aspx演练:创建和使用动态链接库Visual Studio 2005在本演练中,您将创建一个动态链接库 (DLL),其中包含可供其他应用程序使用的有用例程。使用 DLL 是一种重用代码的绝佳方式。您不必在自己创建的每个程序中重新实现这些例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可。本演练使用本机 C++。有关使用本机 C++ 创建静态库的演练,请参见演练:创建和使用静态库。有关使用面向公共语言运行库的 Visual C++ 的演练,请参见演练:创建和使 阅读全文

posted @ 2011-12-21 16:39 无忧consume 阅读(237) 评论(0) 推荐(0) |

摘要:http://7880.com/info/Article-51701560.htmlC++和java中多态机制的异同以前我有个错误的观点:即使在C++和java中多态性的实现机制可能不同,但它们的表现形式应该相同,也就是说如果代码结构相同,那么执行结果也应该相同。可惜事与愿违,事情并不总是你想象中的那样子。(在看下文以前,你最好先考虑一下这个问题,你有什么看法呢?)ok,让我们进入正题。首先本文不讨论面向对象编程的基本概念,如封装、继承和数据抽象等,这方面的资料现在应该多如牛毛,只是稍微提一下多态性的概念。根据Bjarne Stoustrup的说法,多态性其实就是方法调用的机制,也就是说当在编 阅读全文

posted @ 2011-12-21 14:17 无忧consume 阅读(275) 评论(0) 推荐(0) |

摘要:http://dev.yesky.com/295/11596795.shtml不仅仅是名字相同 C++和java多态的区别C++中,如果父类中的函数前边标有virtual,才显现出多态。如果父类func是virtual的,则Super *p =new Sub();p->func(); // 调用子类的func如果不是virtual的,p->func将调用父类原来的函数。Java中,不管写不写virtual都是多态的,子类的同名函数会override父类的。与C++很不同的是,初始化的过程也不相同。在还未初始化子类的时候,子类的同名函数就已经覆盖了父类的了。例如:public cla 阅读全文

posted @ 2011-12-21 14:15 无忧consume 阅读(224) 评论(0) 推荐(0) |

摘要:http://blog.csdn.net/mznewfacer/article/details/6897952全局对象的构造函数将在main函数之前运行。析构在main函数之后运行。静态全局必然也具有这特性函数内部的static对象的构造函数将在第一次调用该函数时调用,main函数结束之后执行。但其析构会在全局对象之前,因为所有对象的析构顺序和构造顺序相反,即全局对象在函数内部的static对象前构造,在后面析构。若包含静态局部对象的函数未被调用,则也不进行析构。可以通过atexit函数指定当离开main或者调用exit时所要执行的动作。其在所有的析构函数之前运行。class Obj{char 阅读全文

posted @ 2011-12-21 13:21 无忧consume 阅读(463) 评论(0) 推荐(0) |

摘要:http://blog.csdn.net/mznewfacer/article/details/6898005c/c++ static 用法总结笔试和面试,经常会被问到static关键字的作用综述static关键字是C, C++中都存在的关键字。static从字面理解,是“静态的“的 意思,与此相对应的,应该是“动态的“。static的作用主要有以下3个:1、扩展生存期;2、限制作用域;3、唯一性;1、扩展生存期这一点主要是针对普通局部变量和static局部变量来说的。声明为static的局部变量的生存期不再是当前作用域,而是整个程序的生存期。在程序中,常用内存类型主要有堆、栈和静态存储区。要 阅读全文

posted @ 2011-12-21 13:17 无忧consume 阅读(442) 评论(0) 推荐(0) |

摘要:typedef常见用法(转)typedef常见用法1.常规变量类型定义例如:typedef unsigned char uchar描述:uchar等价于unsigned char类型定义 uchar c声明等于unsigned char c声明2.数组类型定义例如:typedef int array[2];描述:array等价于 int [2]定义; array a声明等价于int a[2]声明扩展:typedef int array[M][N];描述:array等价于 int [M][N]定义; array a声明等价于int a[M][N]声明3.指针类型定义例如: typedef int 阅读全文

posted @ 2011-12-21 12:59 无忧consume 阅读(186) 评论(0) 推荐(0) |

摘要:http://blog.csdn.net/yangywyangyw/article/details/5967105链接库文件TestDLL.hview plain#pragmaonceextern"c"int_declspec(dllexport)add(int,int);//注意这里不能是_stdcall,否则编译出错,具体原因我也不知呀!链接库文件TestDLL.cppview plain#include"TestDLL.h"intadd(inta,intb){returna+b;}测试链接文件testlink.cppview plain#inclu 阅读全文

posted @ 2011-12-21 11:58 无忧consume 阅读(235) 评论(0) 推荐(0) |

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3