当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: 1.问题在很多用C++开发服务器产品时,需要将不同的数据类型存储到一个容器中(有点类似HttpSession可以保存会话期间任意类型的数据),供其它使用程序查找。
 

 

 ·win2000/xp/2003 下*号密码探测器    »显示摘要«
    摘要: 在win98下,对于别的程序的密码框,我们可以用sendmessage函数可以对这个密码框下一个 wm_gettext 的命令获取这个密码框的内容。但自2000以后,微软的安全意识似乎强了一点, 用这个命令对普通的窗口管用,但对于密码框已经不起作用了。 有不少类似的程序是通过建立动态链接库的方式来获取,但是那样做太麻烦了,其实我们 有更简便的作法。那就是对它先下一个命令,去除它的密码框......
 ·在c#程序中使用mysql数据库    »显示摘要«
    摘要: 一提起mysql数据库,好像就是在说java,jsp或者php,其实在所有程序中都可以使用mysql 数据库,其它的程序使用my sql数据库的方法是使用my sql 提供的odbc驱动,在.net 中可以使用类似于jdbc似的东东.它的名字是:mysqldrivercs.dll.把它添加到.net的组件面板里,至于如何添加,则不是本篇的任务了(^_^)! 下面是创建一个数据库链接: us......


C++基本类型对象化的一个方案

1.问题

 在java与c#中这是一个简单的问题,可以使用object对象来实现类型无关的数据结构,并且很好的解决了内存回收等问题. 【程序编程相关:PHP 5.0.1 中 GD2.0.28

 在很多用c++开发服务器产品时,需要将不同的数据类型存储到一个容器中(有点类似httpsession可以保存会话期间任意类型的数据),供其它使用程序查找. 【推荐阅读:网上取数据的一个例子

【扩展信息:无刷新取数据的一个例子

 但c++中很难做到这一点,c++是一门静态类型语言,没有一个所有类型的基类.

2.一般方法

 一般解决这个问题的办法是使用void*指针来存储数据,象下面的代码:

 map<string,void*>

 但是这样带来几个问题:

 (1)因为c++在不知道类类型时无法正确的释放内存;

 (2)很多使用者使用它时,释放内存的时机难于确定;

3.让它正确释放内存

 我们可以定义一个公共的基类,让所有需要放到容器的类型继承它

 class object

 {

 public:

  virtual ~object(){cout<<"object destroy" << endl;}

 };

 由于使用了virtual析构函数因此可以确保delete obj的时可以正常工作.因此上面的容器定义变成了这样:

 map<string,object*>

4.让它知道何时释放内存

 大家都知道,这时必须使用引用计数,不过很幸运有现成的,我们使用boost::share_ptr

 map<string,boost::share_ptr<object*> >

 很好两个问题都已经解决,但如何向他们中加入c++的基本类型呢?

5.开发基本类型的封装类

 基本类型很多,如果每一个都写一个类,太累了,我们可以定义一个模板,这里的难点是基本类型之间的操作符重载,不同类型之间的运算返回的类型并不相同,这就需要写很多重载函数,在这里我们使用loki来简化这些操作.
...   下一页
    摘要:8月8号,msn shell3.1.0.531推出了~这是一个msn插件,功能强大,使用他可以实现: 使 msn messenger自动隐藏在屏幕的边缘。 轻松创建,修改,删除 个性化的msn messenger的标签。 使msn messenger能隐身登陆,使用多个帐号同时登陆。 更多的msn游戏。 增加手写输入功能,让你能用鼠标或......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE