
C/C++
benny5609
普通得不能再普通的80年代后
展开
-
boost库的使用过程
1.从网上下载(sourceforge.net)boost库(版本boost_1_34_1) 2.运行/boost_1_34_1/tools/jam/src目录下的build.bat批处理文件,将新生成在/boost_1_34_1/tools/jam/src/bin.ntx86目录下的bjam.exe文件拷贝到boost的根目录下(该目录下有boost-build.jam文件) 3.从原创 2008-03-31 17:58:00 · 1272 阅读 · 0 评论 -
C++指针直接调用类成员函数探讨
//…public://…int __cdecl Compare(const void* elem1, const void* elem2) //成员函数。{ printf("%s /n","Calling Test2::Memberfun OK");return *((int*)elem1)- *((int*)elem2) ; } void Memberfun() { data[0]=2; da原创 2008-04-18 13:59:00 · 801 阅读 · 0 评论 -
如何动态保存不同类的对象的成员函数的地址?--解决
问题的提出:就是想要实现一个容器类,可以保存不同类型的函数地址,包括成员函数,且是属于不同类的对象的,即类不同,对象不同,函数不同(参数与返回值相同);如题不知把传进来的不同类的函数地址保存下来,注意:这个保存下来的地址的生命期要和对象的生命期相同;研究过程:1 研究了一个晚上,发现不同函数的信息是可以保存下来的(即把函数地址当作char数组可以保存下来,用memcpy函数可以,),但原创 2008-04-18 16:46:00 · 1154 阅读 · 0 评论 -
成员函数指针与高性能的C++委托(上篇)
Member Function Pointers and the Fastest Possible C++ Delegates 撰文:翻译:周翔 引子 标准 很遗憾, 在这篇文章中,我要揭开成员函数指针那“神秘的盖子”。在扼要地重述成员函数指针的语法和特性之后,我会向读者解释成员函数指针在一些常用的编译器中是怎样实现的,然后我会向大家展示原创 2008-04-18 17:10:00 · 1190 阅读 · 0 评论 -
如何动态保存不同类的对象的成员函数的地址?--解决(续)
我现在用我自己研究的方法写了一个类(见下面源码),与上面提到的文章的类比较有下面一些不同:1,底层关键的实现我用了memcpy,他利用union结构(这也导致我的功能的薄弱)。2,我的类的一个对象可以添加多个函数,可以实现统一的调用,而他的类的一个对象绑定一个函数,但很灵活。(这都是可以改的)3,我的类的功能弱,遇到函数所属的类有继承,虚函数,多重继承时就不对了,只适用单一无继承的类函数;而他的原创 2008-04-18 17:31:00 · 759 阅读 · 0 评论 -
成员函数指针与高性能的C++委托(中篇)
Member Function Pointers and the Fastest Possible C++ Delegates 撰文:翻译:周翔(接上篇)成员函数指针——为什么那么复杂? 类的成员函数和标准的 你可能会猜测,一个成员函数指针和一个普通函数指针一样,只是一个代码指针。然而这种猜测也许是错误的。在大多数编译器中,一个成员函数指针要比一原创 2008-04-18 17:41:00 · 758 阅读 · 0 评论 -
成员函数指针与高性能的C++委托(下篇)
Member Function Pointers and the Fastest Possible C++ Delegates 撰文:翻译:周翔(接中篇)委托(delegate) 和成员函数指针不同,你不难发现委托的用处。最重要的,使用委托可以很容易地实现一个 现在,我来说明一个事实,委托和成员函数指针相比并不仅仅是好用,而且比成员函数指针简单得多!原创 2008-04-18 17:47:00 · 1032 阅读 · 0 评论 -
三个著名加密算法(MD5、RSA、DES)的解析二
2008-01-21 22:17 3.加密算法之DES算法 R@H}n3 , jw!QjVuRN% 一、DES算法 3(( 53@s98 P!)k 4n 美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法原创 2008-04-18 18:32:00 · 2015 阅读 · 0 评论 -
浅析C++中虚函数的调用及对象的内部布局1 (来自:lizhe1985)
在我那篇《浅析C++中的this指针》中,我通过分析C++代码编译后生成的汇编代码来分析this指针的实现方法。这次我依然用分析C++代码编译后生成的汇编代码来说明C++中虚函数调用的实现方法,顺便也说明一下C++中的对象内部布局。下面所有的汇编代码都是用VC2005编译出来的。虽然,不同的编译器可能会编译出不同的结果,对象的内部布局也不尽相同;但是,只要是符合C++标准的编译器,编译结果和对象的原创 2008-04-18 19:20:00 · 708 阅读 · 0 评论 -
CUJ:标准库:容纳指针的容器
The Standard Librarian: I/O and Function Objects: Containers of PointersMatthew Austernhttp://www.cuj.com/experts/1910/austern.htm?topic=experts--------------------------------------------------------原创 2008-04-16 19:36:00 · 743 阅读 · 0 评论 -
COM组件的智能指针(深入浅出)
职能指针其实只是为了我们开发者方便使用的东东,但是大多数据开发者总是害怕会有泄漏,以前的字符串的泄漏问题大家都应该知道了。atl7的出现应该让我们放心使用了!职能指针只是对我们的一些类型或者接口的封装,使我不用每次考虑这引用技术的问题!我们经常用到的职能指针CComPtr,IxxxxPtr,CComBSTR,CComVariant ,_bstr_t。CComBSTR和_bstr_t的用法:原创 2008-04-16 19:34:00 · 2122 阅读 · 1 评论 -
智能指针
智能指针的原理及实现当类中有指针成员时,一般有两种方式来管理指针成员:一是采用值型的方式管理,每个类对象都保留一份指针指向的对象的拷贝;另一种更优雅的方式是使用智能指针,从而实现指针指向的对象的共享。智能指针(smart pointer)的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次原创 2008-04-15 14:32:00 · 704 阅读 · 0 评论 -
用auto_ptr类模板帮助动态内存管理
动态内存使用最多的是在C++应用程序的代码中。有过编程经验的程序员虽然都知道new操作符的使用一定要与delete匹配,在某些场合仍然可能有内存溢出。当异常被掷出时,程序的正常控制流程被改变,因此导致潜在的内存溢出。例如,void g() //可能掷出{ if (some_condition == false) throw X();}void func(原创 2008-04-15 14:43:00 · 567 阅读 · 0 评论 -
智能指针的标准之争:Boost vs. Loki
2001 年10 月和2002 年4 月,在美国的华盛顿和荷兰的安的列斯群岛上分别召开了两 次C++标准会议。会议的内容之一是对一项新的C++特性提议——智能指针(Smart Pointe r)——进行讨论。本文将对可能成为C++新标准的两种智能指针方案(Boost vs. Loki) 进行介绍和分析,并给出了相应的使用实例。 在现在的标准C++中,只有一种智能指针:std::auto_pt原创 2008-04-16 19:30:00 · 1181 阅读 · 0 评论 -
一个智能指针的实现(改进)
前些日子写了一个shared_ptr,后来在应用中发现了些安全漏洞,这篇文档是对shared_ptr改进后的使用和注意事项的一个简要说明,希望广大C++开发者给予意见和改进。让我们在复杂的系统中杜绝内存泄漏。这次改进并没有增加什么功能,而是删除了几个存在安全问题的操作,如release操作。有关和STL里的auto_ptr之间的转换我也做了一些测试,目前只提供auto_ptr到shared_ptr原创 2008-04-15 18:48:00 · 725 阅读 · 1 评论 -
一个智能指针的实现(代码)
/////////////////////////////////////////////////////////////////////////////// template class shared_ptr// 2004-6-12// Chengliang Shan// simouse@原创 2008-04-15 18:49:00 · 704 阅读 · 0 评论 -
深度探索智能指针(Smart Pointer)
主题索引:一、剖析C++标准库智能指针(std::auto_ptr) 1.Do you Smart Pointer? 2.std::auto_ptr的设计原理 3.std::auto_ptr高级使用指南 4.你是否觉得std::auto_ptr还不够完美?二、C++条件,寻找构造更强大的智能指针(Smart Pointer)的 策略 1.原创 2008-04-15 18:51:00 · 1084 阅读 · 0 评论 -
C++内存管理详解
伟大的Bill Gates 曾经失言: 640K ought to be enough for everybody — Bill Gates 1981 程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。 1、内存分配方式 内存分配方式有三种:原创 2008-04-15 19:10:00 · 627 阅读 · 0 评论 -
C++如何抽取随机数
【摘要】用函数srand(int seed)设定种子,再用函数rand()即可生成随机数,所要包含的表头文件是stdlib.h,即#include<stdlib.h>。其中,为了使每次产生的随机数序列不同,必须每次用随机的种子,而实时时间就是一个很好的随机种子,借助time(NULL 或 0)即可实现,当然,要先#include<time.h>。 一、随机数产生函数rand原创 2008-04-15 19:11:00 · 5251 阅读 · 0 评论 -
浅析C++中虚函数的调用及对象的内部布局2 (来自:lizhe1985)
下面通过分析类CDerived的非虚成员函数Fun2()来证明上面图中虚函数表指针的存在。void CDerived::Fun2(){004118F0 push ebp 004118F1 mov ebp,esp 004118F3 sub esp,0CCh 004118F9 push ebx 004118FA push esi 004118FB push edi原创 2008-04-18 19:21:00 · 732 阅读 · 0 评论 -
直接调用类成员函数地址
下载源代码 http://www.vckbase.com/document/viewdoc/?id=1818摘要:介绍了如何取成员函数的地址以及调用该地址.关键字:C++成员函数 this指针 调用约定一、成员函数指针的用法 在C++中,成员函数的指针是个比较特殊的东西。对普通的函数指针来说,可以视为一个地址,在需要的时候可以任意转换并直接调用。但对成员函数来说,常规类型原创 2008-04-18 14:06:00 · 634 阅读 · 0 评论 -
sscanf() 函数用法详解
名称:sscanf() - 从一个字符串中读进与指定格式相符的数据.函数原型:Int sscanf( string str, string fmt, mixed var1, mixed var2 ... );int scanf( const char *format [,argument]... );说明:sscanf与scanf类似,都是用于输入的,只是后者以屏幕(std原创 2008-04-23 09:53:00 · 963 阅读 · 0 评论 -
玩玩vector
//========================================================================//TITLE:// 玩玩vector//AUTHOR:// norains//DATE:// Saturday 10-May-2008//Environment:// VS2005 + MIPS-SDK//=========原创 2008-05-21 15:36:00 · 933 阅读 · 0 评论 -
关于auto_ptr_ref的一点问题
今天我在看 The C++ Standard Library 的时候,总觉的上面讲的关于auto_ptr_ref的问题没有说清楚,查了网上的资料发现也没有说清。 也许还有很多朋友像我一样对此存在疑问。其实,这个问题有没有弄清楚,对实际编程影像并不大,但是本着“勿在浮沙筑高台”的精神,我用了一个晚上的时间,来个彻底的大调查,终于基本上弄明白了其中的道理。(大多数时间都浪费在VC上,因为 VC支持对右原创 2008-06-06 14:07:00 · 3725 阅读 · 8 评论 -
得到汉字的首拼
#include #include using namespace std;static char convert(wchar_t n);static bool In(wchar_t start, wchar_t end, wchar_t code);int main(int argc, char* argv[]){string sChinese = "我爱中国原创 2008-06-12 15:09:00 · 1417 阅读 · 0 评论 -
rand、srand及randomize的用法
首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明。rand(产生随机数)表头文件: #include定义函数 :int rand(void)函数说明 :因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在原创 2008-06-17 19:00:00 · 1573 阅读 · 1 评论 -
3000阶乘_大数相乘
#include #include #define STRMAX 2000#define P 100000#define N 3000int main(){long t[STRMAX]={0},a,b,c,g=0,x,e,p=P;t[STRMAX-1]=1;for (e=1;原创 2008-06-25 22:53:00 · 1601 阅读 · 0 评论 -
ctemplate使用
CTemplate is a simple but powerful template language for C++. It emphasizes separating logic from presentation: it is impossible to embed application logic in this template language. Heres an ex原创 2008-09-18 14:26:00 · 3880 阅读 · 0 评论 -
CString,string,char*的综合比较
(一) 概述string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中;CString(typedef CStringT> CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char(应用于ANSI),wchar_t(unicode原创 2008-07-03 21:26:00 · 1175 阅读 · 0 评论 -
枚举转string输出
<br />#define MSGDEF(x) if(uMsg == x) {printf("%s",#x);}<br />enum kk<br />{<br /> BT_1,<br /> BT_2,<br /> BT_3<br />};<br />void printf_enum(int uMsg)<br />{<br /> MSGDEF(BT_1);<br /> MSGDEF(BT_2);<br /> MSGDEF(BT_3);<br />}原创 2010-08-04 15:35:00 · 2482 阅读 · 0 评论 -
透过汇编另眼看世界之类成员函数指针
前言:在优快云论坛经常会看到一些关于类成员函数指针的问题,起初我并不在意,以为成员函数指针和普通的函数指针是一样的,没有什么太多需要讨论的。当我找来相关书籍查阅了一番以后,突然意识到我以前对成员函数指针的理解太过于幼稚和肤浅了,它即不像我以前认为的那样简单,它也不像我以前认为的那样"默默无闻"。强烈的求知欲促使我对成员函数进行进一步的学习并有了这篇文章。一。理论篇在进行深入学习和分析之前,还是先原创 2008-04-25 10:52:00 · 818 阅读 · 0 评论 -
透过汇编另眼看世界之DLL导出函数调用
前言:我一直对DLL技术充满好奇,一方面是因为我对DLL的导入/导出机制还不是特别的了解,另一面是因为我发现:DLL技术在Windows平台下占有重要的地位,几乎所有的Win32 API都是以导出函数的形式存放于不同的DLL文件中,在DLL方面的学习是任何一个想深入研究Windows内部机制的Windows程序员都不可能回避的事实。我在查阅了大量的文章后,对DLL技术有了一定的了解,所以我写了这篇原创 2008-04-25 10:49:00 · 1669 阅读 · 0 评论 -
typedef使用大全(转)
typedef使用大全(转)一、数组typedef到处都是,但是能够真正懂得typedef使用的不算太多。对于初学者而言,看别人的源码时对到处充斥的typedef往往不知所错,而参考书又很少,所以在此给出一个源码,供大家参考 #include #include /* 避免Visual C的for与标准for的不同 */#define for if (0); else for/* dim(a原创 2008-04-22 13:14:00 · 2781 阅读 · 0 评论 -
C语言中#define的用法(转)
转自:http://www.dingge.com/main/article.asp?id=10今天整理了一些#define的用法,与大家共享!1.简单的define定义#define MAXTIME 1000 一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写if(i编译器在处理这个代码之前会对MAXTIME进行处理替换为1000。这样的定义看起来类似原创 2008-04-22 13:17:00 · 251609 阅读 · 19 评论 -
c++对象模型笔记
很佩服侯捷译书的细致,所以总是想看一遍他翻译的书很值。读技术的书我一向没有很好的习惯做笔记,这次破例记一下重点。(书看完了,笔记还没做完) 深度探索c++对象模型第一章:关于对象 1. c++没有什么天生的比c庞大和迟缓。加上封装后的布局成本(layout costs for adding encapsulation)以及额外存取时间主要由virtual引起1.1 virt原创 2008-04-24 17:49:00 · 1608 阅读 · 0 评论 -
boost::function用法详解
要开始使用 Boost.Function, 就要包含头文件 "boost/function.hpp", 或者某个带数字的版本,从 "boost/function/function0.hpp" 到 "boost/function/function10.hpp". 如果你知道你想保存在 function 中的函数的参数数量,这样做可以让编译器仅包含需要的头文件。如果包含 "boost/function原创 2008-04-24 17:55:00 · 55004 阅读 · 1 评论 -
透过汇编另眼看世界之多继承下的虚函数函数调用
function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(keyit=window.open(http://www.365key.com/storeit原创 2008-04-25 10:22:00 · 1369 阅读 · 0 评论 -
透过汇编另眼看世界之函数调用
在我的另外一篇文章中 ,我提到了要通过汇编语言来分析虚函数调用的真相。我们现在就开始踏上这次艰辛却非常有意思的旅程。其他闲话少说,直接进入主题。本文中使用的C++代码:#include "stdafx.h"#include iostream>class CBase {public: virtual void callMe();};class CDerived: public CBas原创 2008-04-25 10:27:00 · 933 阅读 · 0 评论 -
一次有意义的面向对象设计尝试
前言 上一周由于工作的需要,我尝试运用面向对象的设计思想来解决实际工作中遇到的一个设计问题。整个设计过程主要涉及到C++语言,OO编程思想,设计模式这三个方面的知识,是对我软件设计能力的一次综合考验。虽然最后由于种种原因,我的设计方案并没有获得采纳,但是这个并不重要,重要的是在整个设计过程中我自己思考过,并提出了我的方案,也就是说,我在这次设计过程中学到了很多。我决定把这次设计记录下来,一方面是原创 2008-04-25 10:31:00 · 972 阅读 · 0 评论 -
虚函数表放在哪里?
引言:近日优快云的"C/C++语言"版的一个问题引起了我的注意:"请问虚函数表放在哪里?"。我也曾经思考过这个问题,零零散散也有一定的收获,这次正好趁这个机会把我对这一部分的理解整理一下。 首先值得声明的是,本文的编译环境是VS2002+WinXP。C++标准并没有对虚函数的实现作出任何的说明,甚至都没有提到虚函数的实现需要用虚表来实现,只不过主流的C++编译器的虚函数机制都是通过虚表来实现的,原创 2008-04-25 10:37:00 · 1233 阅读 · 0 评论