
c++
文章平均质量分 72
DICOMV3PACS
这个作者很懒,什么都没留下…
展开
-
如何成为一名C++程序员
如何成为一名C++程序员2008年09月10日 星期三 16:49如何成为一名C++程序员入门: 入门就是要初步对编程的思想有个了解,并且能编程解决一些小问题。入门一定要选好书,难度如果太低了会造成对读者的误导,以为编程就是这么回事;也不能太高深,免的打击读者的信心。既然编程的入门要求是编一些小程序解决小问题,那么就没必要直接学习C++,我觉得循环、判断、跳转、指原创 2010-02-27 20:12:00 · 1204 阅读 · 0 评论 -
c++程序链接的过程原理详解
<br />原文地址: http://zengzn.blogspot.com/2008/02/boostregexhpp-lnk2005.html<br />许多Visual C++的使用者都碰到过LNK2005:symbol already defined和LNK1169:one or more multiply defined symbols found这样的链接错误,而且通常是在使用第三方库时遇到的。对于这个问题,有的朋友可能不知其然,而有的朋友可能知其然却不知其所以然,那么本文就试图为大家彻底解开关转载 2010-10-16 16:38:00 · 708 阅读 · 0 评论 -
c++底层机制
<br />c++为我们所提供的各种存取控制仅仅是在编译阶段给我们的限制,也就是说是编译器确保了你在完成任务之前的正确行为,如果你的行为不正确,那么你休想构造出任何可执行程序来。 <br />但如果真正到了产生可执行代码阶段,无论是c,c++,还是pascal,大家都一样,你认为c和c++编译器产生的机器代码会有所不同吗,你认为c++产生的机器代码会有访问限制吗?那么你错了。什么const,private,统统没有(const变量或许会放入只读数据段),它不会再给你任何的限制,你可以利用一切内存修改工具或者转载 2010-10-16 19:49:00 · 538 阅读 · 0 评论 -
the function pointer tutorials
<br />http://www.newty.de/fpt/index.html转载 2010-10-15 15:36:00 · 432 阅读 · 0 评论 -
Visual C++ 编译器原理
<br />很奇怪不是么?很多人在使用C++。但很少有人真正关心C++ Compile是如何实现的。<br />Jan Gray在1994曾经写了一篇叫做C++ under the Hood的文章,介绍了Visual C++的实现细节。这篇指南就是基于Jan的文章之上,我同时会将Jan文章中让人难于理解的地方详细阐述。希望这篇指南可以让更多的人了解C++的底层实现机制。<br /><br />The layout of a Class <br />struct B {<br />public:<br />转载 2010-10-16 15:45:00 · 622 阅读 · 0 评论 -
c/c++语言变量声明内存分配
<br />一个由c/C++编译的程序占用的内存分为以下几个部分<br /><br />1、栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。程序结束时由编译器自动释放。<br /><br />2、堆区(heap) — 在内存开辟另一块存储区域。一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。<br /><br />3、全局区(静态区)(static)—编译器编原创 2010-10-18 16:53:00 · 1026 阅读 · 1 评论 -
LIB和DLL的区别与使用
<br />共有两种库:<br />一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。<br />一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。<br />共有两种链接方式:<br />动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅包含在运行时定位DLL函数的可执行代码所需的信息。<br />静态链转载 2010-10-18 17:21:00 · 765 阅读 · 0 评论 -
md /mdd /ml /mt/mtd
<br />VC编译选项 多线程(/MT)<br />多线程调试(/MTd)<br />多线程 DLL (/MD)<br />多线程调试 DLL (/MDd)<br />C 运行时库 库文件<br />Single thread(static link) ML libc.lib<br />Debug single thread(static link) MLd libcd.lib<br />MultiThread(static转载 2010-10-18 20:11:00 · 649 阅读 · 0 评论 -
C/C++中typedef struct和struct的用法
由于对typedef理解不够,因此从网上摘录了一些资料,整理如下: C/C++中typedef struct和struct的用法 struct _x1 { ...}x1; 和 typedef struct _x2{ ...} x2; 有什么不同? 其实, 前者是定义了类_x1和_x1的对象实例x1, 后者是定义了类_x2和_x2的类别名x2 , 所以它们在使用过程中是有取别的.请看实例1. [知识点] 结构也是一种数据类型, 可以使用结构变量转载 2010-12-19 18:43:00 · 626 阅读 · 0 评论 -
c++ 指针赋值
<br />一、一级指针<br /> <br />char *a="a";<br />char *b="b";<br /> <br />a=b;//这个是b把存的内容b给a,此时a的内容是b,所以指针与指针赋值实际也是传值,和普通变量一样。若a的内容变为c,则b的内容还是b<br /> <br />二、二级指针<br /> <br />char **c=&a;<br /> <br />char **d=&b;<br /> <br />c=d;//这样是把b的地址给了c,此时d和c都指向b,若c的内容发生改变原创 2011-01-14 10:11:00 · 5443 阅读 · 0 评论 -
多态polymorphism
<br /><br />多态(Polymorphism)是面向对象的核心概念,本文以C++为例,讨论多态的具体实现。C++中多态可以分为基于继承和虚函数的动态多态以及基于模板的静态多态,如果没有特别指明,<br />本文中出现的多态都是指前者,也就是基于继承和虚函数的动态多态。至于什么是多态,在面向对象中如何使用多态,使用多态的好处等等问题,如果大家感兴趣的话,可以找本面向对象的书来看看。<br /> 为了方便说明,下面举一个简单的使用多态的例子(From [1] ):View Codeclass S转载 2011-03-02 12:59:00 · 525 阅读 · 0 评论 -
virtual inheritance
<br /><br />虚拟继承在一般的应用中很少用到,但是,在多重继承中,有一个很经典的应用场合。例如:<br />include <iostream.h><br />#include <memory.h><br /><br />class CA<br />{<br />int k; //为了便于说明后面的内存结构特别添加<br />public:<br />void f() {cout << "CA::f" << endl;}<br />};<br /><br />class CB : public C转载 2011-03-02 11:33:00 · 778 阅读 · 0 评论 -
面向对象的设计原则-类设计原则
<br /><br />在面向对象设计中,如何通过很小的设计改变就可以应对设计需求的变化,这是令设计者极为关注的问题。为此不少OO先驱提出了很多有关面向对象的设计原则用于指导OO的设计和开发。下面是几条与类设计相关的设计原则。<br />1. 开闭原则(the Open Closed Principle OCP)<br /> 一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。因此在进行面向对象设计时要尽量考虑接口封装机制、抽象机制和多态技术。该原则同样适合于非面向对象设计的方法,是软件工程设计方转载 2011-03-03 14:33:00 · 538 阅读 · 0 评论 -
设计模式原则详解
<br /><br />这篇文章,不需要你一次就看懂,如果你真的能一次都看懂,我想设计模式对于你来说已经没什么难度了..因为设计模式就是要体现这些原则的,你可以把设计原则看做是一门语言,设计模式是由这些语言编码的程序..你既然已经明白,精通了语言,剩下的编码自然是很简单的事情,编码的越多则经验越多,经验越多则对原则的理解就越深...这是一个学习领悟的过程..<br /> 我希望这篇文章能帮助新人感受到设计模式的乐趣,避免重复编码....减少劳动量..如果你能在用心静静的体会文章的每个字,每段话的意思转载 2011-03-03 14:32:00 · 552 阅读 · 0 评论 -
java调用dll方法--JNI
java调用dll方法--JNI2010-03-26 04:02 Java语言本身具有跨平台性,如果通过Java调用DLL的技术方便易用, 使用Java开发前台界面可以更快速,也能带来跨平台性。 Java调用C/C++写好的DLL库转载 2011-09-05 09:36:01 · 1201 阅读 · 0 评论 -
VC++程序编译链接的原理与过程
<br />我们在EX10这个工程中,选择菜单中【Build】→【Rebuild All】,重新编译所有的工程文件,可以看到如下输出: <br /><br /> <br /><br /> 从这个输出中,我们可以看到可执行程序EX10.exe的产生,经过了两个步骤:首先,C++编译器对工程中的三个源文件fish.cpp、animal.cpp单独进行编译(Compiling…)。在编译时,先由预处理器对预处理指令(#include、#define和#if)进行处理,在内存中输出翻译单元(一种临时文件)。编译器转载 2010-10-16 15:44:00 · 1128 阅读 · 0 评论 -
C指针-函数名与函数指针
<br />C指针-函数名与函数指针(2005-10-14 23:35:00)<br /> 函数名与函数指针<br /><br />一通常的函数调用<br /> 一个通常的函数调用的例子:<br />//自行包含头文件<br />void MyFun(int x); //此处的申明也可写成:void MyFun( int );<br /><br />int main(int argc, char* argv[])<br />{<br /> MyFun(10); //这里是调用MyFu转载 2010-10-15 17:00:00 · 615 阅读 · 0 评论 -
VC++动态链接库(DLL)编程深入浅出之三(2)
<br />5.4 MFC规则DLL的调用<br /><br /> 笔者编写了如图12的对话框MFC程序(下载本工程附件)来调用5.3节的MFC规则DLL,在这个程序的对话框上点击“调用DLL”按钮时弹出5.3节MFC规则DLL中的对话框。<br /><br />图12 MFC规则DLL的调用例子<br /><br /> 下面是“调用DLL”按钮单击事件的消息处理函数:<br />void CRegularDllCallDlg::OnCalldllButton() <br />{<br /> typed原创 2010-07-14 13:30:00 · 480 阅读 · 0 评论 -
c++ DLL编程之二
<br />__declspec(dllexport)<br />为每个dll写def显得很繁杂,目前def使用已经比较少了,更多的是使用__declspec(dllexport)在源代码中定义dll的输出函数。<br />Dll写法同上,去掉def文件,并在每个要输出的函数前面加上声明__declspec(dllexport),例如:<br /> <br />__declspec(dllexport) void FuncInDll (void)<br />这里提供一个dll源程序dll_withlib.c原创 2010-07-14 13:25:00 · 931 阅读 · 0 评论 -
VC++动态链接库(DLL)编程深入浅出之一
<br /> <br />1.概论<br /><br /> 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。<br /> 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该DLL不必被包含在最终EXE文件中,EXE文件执行时可以原创 2010-07-14 13:25:00 · 727 阅读 · 0 评论 -
VC++动态链接库(DLL)编程深入浅出之二(1)——非MFC dll
<br />上节给大家介绍了静态链接库与库的调试与查看(动态链接库(DLL)编程深入浅出(一)),本节主要介绍非MFC DLL。<br />4.非MFC DLL<br /><br />4.1一个简单的DLL<br /><br /> 第2节给出了以静态链接库方式提供add函数接口的方法,接下来我们来看看怎样用动态链接库实现一个同样功能的add函数。<br /><br /> 如图6,在VC++中new一个Win32 Dynamic-Link Library工程dllTest(单击此处下载本工程附件)。注意不原创 2010-07-14 13:26:00 · 895 阅读 · 0 评论 -
VC++动态链接库(DLL)编程深入浅出之四
<br /> <br />这是《VC++动态链接库(DLL)编程深入浅出》的第四部分,阅读本文前,请先阅读前三部分:(一)、(二)、(三)。<br /> MFC扩展DLL的内涵为MFC的扩展,用户使用MFC扩展DLL就像使用MFC本身的DLL一样。除了可以在MFC扩展DLL的内部使用MFC以外,MFC扩展DLL与应用程序的接口部分也可以是MFC。我们一般使用MFC扩展DLL来包含一些MFC的增强功能,譬如扩展MFC的CStatic、CButton等类使之具备更强大的能力。<br /> 使用Visua原创 2010-07-14 13:31:00 · 667 阅读 · 0 评论 -
c++ DLL编程之一
<br />DLL的优点<br />简单的说,dll有以下几个优点:<br />1) 节省内存。同一个软件模块,若是以源代码的形式重用,则会被编译到不同的可执行程序中,同时运行这些exe时这些模块的二进制码会被重复加载到内存中。如果使用dll,则只在内存中加载一次,所有使用该dll的进程会共享此块内存(当然,像dll中的全局变量这种东西是会被每个进程复制一份的)。<br />2) 不需编译的软件系统升级,若一个软件系统使用了dll,则该dll被改变(函数名不变)时,系统升级只需要更换此d原创 2010-07-14 13:24:00 · 749 阅读 · 0 评论 -
VC++动态链接库(DLL)编程深入浅出之二(2)
<br />4.3 DLL的调用方式<br /><br /> 在4.1节的例子中我们看到了由“LoadLibrary-GetProcAddress-FreeLibrary”系统Api提供的三位一体“DLL加载-DLL函数地址获取-DLL释放”方式,这种调用方式称为DLL的动态调用。<br /><br /> 动态调用方式的特点是完全由编程者用 API 函数加载和卸载 DLL,程序员可以决定 DLL 文件何时加载或不加载,显式链接在运行时决定加载哪个 DLL 文件。<br /><br /> 与动态调用方式原创 2010-07-14 13:27:00 · 825 阅读 · 0 评论 -
VC++动态链接库(DLL)编程深入浅出之三(1)——MFCdll
<br />第4节我们对非MFC DLL进行了介绍,这一节将详细地讲述MFC规则DLL的创建与使用技巧。 <br /><br /> 另外,自从本文开始连载后,收到了一些读者的e-mail。有的读者提出了一些问题,笔者将在本文的最后一次连载中选取其中的典型问题进行解答。由于时间的关系,对于读者朋友的来信,笔者暂时不能一一回复,还望海涵!由于笔者的水平有限,文中难免有错误和纰漏,也热诚欢迎读者朋友不吝指正!<br /><br /> 5. MFC规则DLL<br /><br /> 5.1 概述<br /><原创 2010-07-14 13:29:00 · 698 阅读 · 0 评论 -
宽字符集(unicode)操作函数
<br />iswalnum() isalnum() 测试字符是否为数字或字母<br /> iswalpha() isalpha() 测试字符是否是字母<br /> iswcntrl() iscntrl() 测试字符是否是控制符<br /> iswdigit() isdigit() 测试字符是否为数字<br /> iswgraph() isgraph() 测试字符是否是可见字符<br /> iswlower() islower() 测试字原创 2010-07-30 12:28:00 · 526 阅读 · 0 评论 -
VC6.0和VS2005:C++和C#编写调用COM组件
这篇文章就是关于COM组件的编写和调用的,主要包含了使用VC6.0编写和调用COM组件,VS2005中使用C#编写和调用COM组件,以及在VC6.0和VS2005之间互相调用COM组件。<br /> <br />前一阵在工作中做项目的时候,遇到了COM组件的调用和使用问题,当时研究和好一阵,才把中间的环节打通,现在写出来为大家提供方便,这里包含了四个类型:<br />1、在VS2005中,C#编写DLL并使用C++调用<br />2、在VS2005中C#编写的COM组件,使用VC6.0调用<br /原创 2010-07-30 14:48:00 · 1113 阅读 · 0 评论 -
DllMain详解
<br />1 DLL的进入/退出函数1.1 DllMain简介跟exe有个main或者WinMain入口函数一样,DLL也有一个入口函数,就是DllMain。以“DllMain”为关键字,来看看MSDN帮助文档怎么介绍这个函数的。The DllMain function is an optional method of entry into a dynamic-link library (DLL)。(简要翻译:对于一个Dll模块,DllMain函数是可选的。)这句话很重要,很多初学者可能都认为一个动态转载 2010-10-10 12:19:00 · 620 阅读 · 0 评论 -
Memory Management in C++
<br />Memory Management in C++<br />by Nathan C. Myers <br />Memory usage in C++ is as the sea come to land: <br />a tide rolls in, and sweeps out again, <br />leaving only puddles and stranded fish. <br />At intervals, a wave crashes ashore; but the <br /转载 2010-10-15 11:20:00 · 2014 阅读 · 0 评论 -
application和dll的区别
application和dll的区别(翻译)<br />虽然app和dll都是一种可执行的程序模型(executable program modules),但是他们之间还是存在不同点。最明显的对于终端用户来说dll是不可以双击直接运行的;但从系统的角度来说的话app和dll有两条基本的不同点:<br />1、在一个系统的运行时刻一个app可以有多个实例同时运行,但是dll只能有一个实例;<br />2、一个app可以拥有他自己的堆、全局内存、文件句柄以及消息队列,但是dll没有;<br /> <br />实翻译 2010-10-15 12:40:00 · 739 阅读 · 0 评论 -
Dynamic-link library
<br />http://en.wikipedia.org/wiki/Dynamic-link_library<br />http://en.wikipedia.org/wiki/DLL_hell转载 2010-10-15 12:55:00 · 415 阅读 · 0 评论 -
Jni中C++和Java的参数传递
Jni中C++和Java的参数传递如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对Jni不甚了解,不知道Jni是做什么的,如何建立一个基本的jni程序,或许可以参考下面下面这些文章:利用VC++6.0实现JNI的最简单的例子 JNI入门教程之Hel转载 2011-09-05 11:35:51 · 750 阅读 · 0 评论