当前位置: 首页 > wzjs >正文

婚庆行业网站建设方案1合肥瑶海区新楼盘在售

婚庆行业网站建设方案1,合肥瑶海区新楼盘在售,一个完整网页的制作案例,wordpress 重制密码在前文《C的模板(八):子系统》class DMM,给出了一个自动动态内存管理的例子。https://blog.csdn.net/aaasssdddd96/article/details/139921880 它使用了一个list容器,把两个类型兼容的指针存放在一起。在new的时候,随即就把得到的…

在前文《C++的模板(八):子系统》class DMM,给出了一个自动动态内存管理的例子。https://blog.csdn.net/aaasssdddd96/article/details/139921880

它使用了一个list容器,把两个类型兼容的指针存放在一起。在new的时候,随即就把得到的指针放进了list容器里。在管理器析构的时候,自动释放容器中的指针。这样避免了手动释放内存的问题。指针new出来就可以用了,不用自己释放,也不用担心内存泄漏。

现在做一点改造。采用更多的list容器来管理不同的new类型。让几乎每一种类型可以同样自动管理。根据前文的例子,问题的后一半已经有了答案,现在只要把list容器组装起来。

考虑到每个list容器,如list<int>,list<double>,原则上虽然都是list,具体到语法上却都是不同的类型。要把它们调整到一致。前文《C++的继承(十二):抽象类》给出了一种方法。https://blog.csdn.net/aaasssdddd96/article/details/146153593

如果还记得“吃饺子要沾点醋”这句话,现在就来用一下。就是让它们都继承一个空的抽象类。一个空的抽象类好比是“要沾的醋”。

class E{
public:
virtual ~E() {printf("~E\n");}
};
template <class C>
class M: public E
{
public:list<C*> l;C *newobj(C x) {C *p = new C(x);l.push_back(p);return p;}~M() {printf("type:  M<%s>:\n", typeid(C).name());typename list<C*>::iterator it;for(it=l.begin(); it!=l.end(); ++it) {if(typeid(C)==typeid(int)) {printf("%d ", *(int*)*it);}else if(typeid(C)==typeid(double)) {printf("%lf ", *(double*)*it);} else printf(". ");delete *it;}printf("/.\n");}
};

各种list容器已经包装到了class M中,并且继承了共同的空类E。

现在把这些包装过的list容器组装进map模板。用内存分配的目标类型的typeid来进行索引。注意虽然是用typeid来进行索引这个概念。在具体实现上,由于编译器typeid返回的type_info类型做成了固定的const 类型,并且屏蔽了构造函数,复制,赋值这些操作,不能直接用它来构造map容器。需要用个代理来做这些事情。

class typeinfop {const type_info *tp;
public:typeinfop(const type_info *p){tp=p;}bool less(const type_info *t)const  {return tp->before( *t);}bool operator<(const typeinfop p) const {return less(p.tp);}
};

这个typeinfop将作为map模板的key来使用。注意作为map模板的key必须定义operator<()比较运算。

接下来就定义一个封装了map模板的简单类class SE。因为各种list容器已经统一继承了空类E。map模板的类型就是 map<typeinfop, E*>。类中含有一个newobj()模板成员函数和一个析构函数。析构函数会自动删除用E类包装的list容器。而这些list容器在析构时,又会自动删除内存分配new出去的对象指针。

class SE {map<typeinfop, E*> m;
public:template<class C>C *newobj(C x) {E* p;M<C>  *mp;p = m[typeinfop(&typeid(C))];if(!p) {p = new M<C>;m[typeinfop(&typeid(C))]=p;}mp = static_cast<M<C>*> (p);return mp->newobj(x);}~SE() {map<typeinfop, E*>::iterator it;for(it=m.begin(); it!=m.end(); ++it) {delete it->second;}}
}sm;

这就大功告成了。现在写个main()函数测试下看效果,new出来就不用管了:

#include <stdio.h>
#include <stdlib.h>
#include <list>
#include <map>
#include <typeinfo>
using namespace std;
int main()
{int *p;double *dp;dp= sm.newobj(3.1);p= sm.newobj(3);dp= sm.newobj(3.14);p= sm.newobj(4);dp= sm.newobj(3.141);p= sm.newobj(5);dp= sm.newobj(3.1415);int **pp = sm.newobj(p);double **dpp = sm.newobj(dp);return 0;
}

运行结果:

type:  M<Pd>:
. /.
~E
type:  M<Pi>:
. /.
~E
type:  M<d>:
3.100000 3.140000 3.141000 3.141500 /.
~E
type:  M<i>:
3 4 5 /.
~E

sm内存管理器自动生成了4个list容器。分别是list<double*>,list<int*>,list<double>和list<int>。打印的信息是析构函数里输出的,分配的每一个数据都得到了删除处理。


文章转载自:

http://IMEtu3vo.Lnfkd.cn
http://CdqfbU31.Lnfkd.cn
http://ESCF4VnU.Lnfkd.cn
http://HiQije8x.Lnfkd.cn
http://i3B7115r.Lnfkd.cn
http://vaRwF31j.Lnfkd.cn
http://MDW5MGvP.Lnfkd.cn
http://KiJaFhro.Lnfkd.cn
http://2trblGRo.Lnfkd.cn
http://5bgukDHo.Lnfkd.cn
http://LmUzW2sE.Lnfkd.cn
http://aWrnrmfz.Lnfkd.cn
http://1uThTK3D.Lnfkd.cn
http://NeUHagri.Lnfkd.cn
http://UPLo26EP.Lnfkd.cn
http://v6qtLCGU.Lnfkd.cn
http://msuC2lQQ.Lnfkd.cn
http://7rizHGjR.Lnfkd.cn
http://YBmbpfoJ.Lnfkd.cn
http://Vt0O9awf.Lnfkd.cn
http://utXk08Bc.Lnfkd.cn
http://ICwwZE47.Lnfkd.cn
http://pJWo6JsX.Lnfkd.cn
http://jE37W7up.Lnfkd.cn
http://OnBoFO28.Lnfkd.cn
http://YmnisMJr.Lnfkd.cn
http://itWnDDkU.Lnfkd.cn
http://tLVCLRsB.Lnfkd.cn
http://rMbK7CGU.Lnfkd.cn
http://4SwmmoqR.Lnfkd.cn
http://www.dtcms.com/wzjs/725034.html

相关文章:

  • 网站建设的预算游戏开发有前途吗
  • 免费的网页网站做一件代发的网站
  • 网站功能建设中企业寻找客户有哪些途径
  • 天津做网站的费用建设网站视频教程
  • 谁有好的网站推荐一个东莞服务公司网站建设
  • 可信网站免费认证凡科和有赞哪个好用
  • 推荐一些做网站网络公司二手房公司如何做网站
  • 湖南网站推丰台怎样做网站
  • 支付宝签约网站wordpress 制作下载
  • 西安网站排名优化wordpress 中文 主题
  • 惠阳住房与规划建设局网站黔彩终端效果图
  • 给公司做网站百度指数有哪些功能
  • 上海电商网站设计p站代理网址
  • 微网站建设开发工具北京展柜设计制作公司
  • 高中作文网站眉山注册公司流程和费用
  • dedecms 网站地图xmlwordpress云播放
  • 网站中信息更新怎么做的四川工程造价信息网
  • 网站代备案系统做网站都去哪申请网址
  • 合肥的网站建设公司做企业网站的尺寸是多少
  • 温岭 网站制作搜索引擎营销方式
  • 网站需要怎么优化比较好wordpress 静态发布
  • 城口网站建设做盗版视频网站犯法吗
  • 手机要访问国外网站如何做衡水网站推广公司
  • 铜川网站建设公司电话什么网站不用备案
  • 网站制作公司都还赚钱吗网页设计制作公司报价
  • php 资讯网站苏州市建设厅网站首页
  • python网站开发 django网络推广工作好干吗
  • 网站建设目的意义互联网公司排名类比
  • 徐州网站建设找哪家企业为什么做网站系统
  • 网站提交至google个体工商户经营范围网站开发