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

代加工厂都不做网站微信小程序开发工具官网入口

代加工厂都不做网站,微信小程序开发工具官网入口,国外可以用什么网站做问卷,网站后台管理系统ie8用不了文章目录 一、思想二、框架三、代码 一、思想 每⼀个Connection对连接进行管理,最终都不可避免需要涉及到应用层协议的处理,因此在Connection中需要设置协议处理的上下文来控制处理节奏。但是应用层协议千千万,为了降低耦度,这个…

文章目录

  • 一、思想
  • 二、框架
  • 三、代码

一、思想

每⼀个Connection对连接进行管理,最终都不可避免需要涉及到应用层协议的处理,因此在Connection中需要设置协议处理的上下文来控制处理节奏。但是应用层协议千千万,为了降低耦度,这个协议接收解析上下文就不能有明显的协议倾向,它可以是任意协议的上下文信息,因此就需要⼀个通⽤的类型来保存各种不同的数据结构。
在C语言中,通用类型可以使用void*来管理,但是在C++中,boost库和C++17给我们提供了一个通用类型any来灵活使用,如果考虑增加代码的移植性,尽量减少第三方库的依赖,则可以使用C++17特性中的any,或者自己来实现。而这个any通用类型类的实现其实并不复杂,以下是简单的部分实现。

二、框架

/*Any类主要是实现⼀个通⽤类型出来,在c++17和boost库中都有现成的可以使⽤,但是这⾥实现⼀下
了解其思想,这样也就避免了第三⽅库的使⽤了*//*⾸先Any类肯定不能是⼀个模板类,否则编译的时候 Any<int> a, Any<float>b,需要传类型作
为模板参数,也就是说在使⽤的时候就要确定其类型*/
/*这是⾏不通的,因为保存在Content中的协议上下⽂,我们在定义any对象的时候是不知道他们的协
议类型的,因此⽆法传递类型作为模板参数*/
/*因此考虑Any内部设计⼀个模板容器holder类,可以保存各种类型数据*/
/*⽽因为在Any类中⽆法定义这个holder对象或指针,因为any也不知道这个类要保存什么类型的数
据,因此⽆法传递类型参数*/
/*所以,定义⼀个基类placehoder,让holder继承于placeholde,⽽Any类保存⽗类指针即可*/
/*当需要保存数据时,则new⼀个带有模板参数的⼦类holder对象出来保存数据,然后让Any类中的⽗
类指针,指向这个⼦类对象就搞定了*/

三、代码

class Any{private:class holder {public:virtual ~holder() {}virtual const std::type_info& type() = 0;virtual holder *clone() = 0;};template<class T>class placeholder: public holder {public:placeholder(const T &val): _val(val) {}// 获取子类对象保存的数据类型virtual const std::type_info& type() { return typeid(T); }// 针对当前的对象自身,克隆出一个新的子类对象virtual holder *clone() { return new placeholder(_val); }public:T _val;};holder *_content;public:Any():_content(NULL) {}template<class T>Any(const T &val):_content(new placeholder<T>(val)) {}Any(const Any &other):_content(other._content ? other._content->clone() : NULL) {}~Any() { delete _content; }Any &swap(Any &other) {std::swap(_content, other._content);return *this;}// 返回子类对象保存的数据的指针template<class T>T *get() {//想要获取的数据类型,必须和保存的数据类型一致assert(typeid(T) == _content->type());return &((placeholder<T>*)_content)->_val;}//赋值运算符的重载函数template<class T>Any& operator=(const T &val) {//为val构造一个临时的通用容器,然后与当前容器自身进行指针交换,临时对象释放的时候,原先保存的数据也就被释放Any(val).swap(*this);return *this;}Any& operator=(const Any &other) {Any(other).swap(*this);return *this;}
};
http://www.yayakq.cn/news/831378/

相关文章:

  • 免费建设旅游网站建设网站是什么样的
  • 推广系统建站网站建设工具的实验心得
  • 周浦高端网站建设公司wordpress 主机郑州
  • 龙岗网站建设工程漫画网站php源码
  • wordpress建站不知道密码title (网站开发)
  • 专业网站建设咨询建设家具网站的目的及功能定位
  • 软件销售网站模板游戏网站开发计划书案例目录
  • 网站建设白沟做网站怎么修改网址
  • 免费网站建设价格费用传奇手游开服表网站
  • 建设银行四川分行 招聘网站网站建立的步骤
  • 上海浦东网站设计公司蚁百杭州网站seo优化
  • 崂山区建设局网站WordPress无缩略图文章筛选
  • 寿光企业建站流程做网站需要报备什么
  • 学习网站建设的心得体会广州网络帮助建站
  • 站酷网官网登录网站建好了 怎么建后台
  • 富阳住房和城乡建设部网站网站建设需要要多少钱
  • 广东网站设计网站qq空间个人网站
  • 国外网站工作室建设品牌网站
  • 安徽省高等级公路工程建设指挥部网站新开传奇网站发布网单
  • 源码网站 怎么做wordpress 弹窗注册登录
  • 你有网站 我做房东 只收佣金的网站在哪里建网站比较好
  • 建设工程类的网站网站设计建议
  • 安庆市建设银行网站重庆九龙坡区最新消息
  • .netcore网站开发无锡连夜发布最新通告
  • 陕西华伟建设有限公司网站外贸功能网站建设
  • 怎么做挖矿网站网站制作 广州
  • 物流网站怎么做网站后台上传模板
  • 程序员做任务的网站东莞网页设计报价
  • 网站开发的背景知识与相关技术潢川城乡建设局网站
  • 建设银行档案管理网站原创网站设计