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

潍坊手机网站制作网站空间和云服务器

潍坊手机网站制作,网站空间和云服务器,网络规划的主要步骤,联通企业网站建设Smart Pointers智能指针 看起来、用起来、感觉起来像内置指针#xff0c;但提供更多的机能。拥有以下各种指针行为的控制权#xff1a; 构造和析构#xff1b;复制和赋值#xff1b;解引。 Smart Pointers的构造、赋值、析构 C的标准程序库提供的auto_ptr template: au…Smart Pointers智能指针 看起来、用起来、感觉起来像内置指针但提供更多的机能。拥有以下各种指针行为的控制权 构造和析构复制和赋值解引。 Smart Pointers的构造、赋值、析构 C的标准程序库提供的auto_ptr template: auto_ptr对象是个smart pointer用来指向诞生于堆内的对象直到该auto_ptr被销毁为止当销毁发生时auto_ptr的析构函数会删除其所指物。 templateclass T class auto_ptr { public:auto_ptr(T* ptr):pointee(ptr){}~auto_ptr(){delete pointee;}... private:T* pointee; };在“同一对象只可被一个auto_ptr拥有”的前提下上述做法可以有效运作但当auto_ptr被复制或被赋值其“对象拥有权”会转移 templateclass T class auto_ptr { public:...auto_ptr(auto_ptrT rhs);auto_ptrT operator (auto_ptrT rhs);... }; templateclass T auto_ptrT::auto_ptr(auto_ptrT rhs) {pointee rhs.pointee; //将*pointee的拥有权转移至*thisrhs.pointee 0; //rhs不再拥有任何东西 }templateclass T auto_ptrT auto_ptrT::operator (auto_ptrT rhs) {if(this rhs)return *this;delete pointee; //必须删除目前拥有之物pointee rhs.pointee;rhs.pointee 0;return *this; }由于auto_ptr的复制构造函数被调用时对象拥有权转移了所以以by value方式传递auto_ptrs绝对不合适Pass-by-refrence-to-const才是适当的途径。 void printTreeNode(ostream s,auto_ptrTreeNode p) {s *p; }int main() {autoTreeNode ptn(new TreeNode);...printTreeNode(cout,ptn); //以by value方式传递auto_ptr }//Pass-by-refrence-to-const方式 void printTreeNode(ostream s, const auto_ptrTreeNode p) {s *p; }实现Dereferencing Operators解引操作符 smart pointers的核心operator*和operator-函数 //operator* templateclass T T SmartPtrT::operator*() const {///perform smart pointer processing;return *pointee; } //返回值是reference形式//operator- void editTuple(DBPtrTuple pt) {LogEntryTuple entry(*pt);do{pt-displayEditDialog();//会被编译器解释为(pt.operator-())-displayEditDialog();}while (pt-isValid false) } //大部分时候想要operator-返回一个普通的dump pointer templateclass T T* SmartPtrT::operator-() const {//perform smart pointer processing;return pointee; }测试Smart Pointers是否为NULL 为smart pointer classes加上一个isNull函数很容易但smart pointers 无法像dumb pointers那般自然地测试是否为null SmartPtrTreeNode ptn; ... if(ptn 0) ... //错误 if(ptn) ... //错误 if(!ptn) ... //错误提供一个类型转换操作符允许上述动作得以通过编译 templateclass T class SmartPtr { public:...operator void*(); //如果dumb ptr是null返回零//否则返回非零值 };SmartPtrTreeNode ptn; ... if(ptn 0) ... //ok if(ptn) ... //ok if(!ptn) ... //ok缺点允许你把smart pointers拿来和完全不同的类型做比较 SmartPtrApple pa; SmartPtrOrange po; ... if(pa po) //竟然可以过关//重载“操作符” templateclass T class SmartPtr { public:...bool operator!() const; //只有当smart ptr是null才返回true... };//clients SmartPtrTreeNode ptn; ... if(!ptn) {... }else{... }if(ptn 0) ... //错误 if(ptn) ... //错误//唯一的风险 SmartPtrApple pa; SmartPtrOrange po; ... if(!pa !po) //竟然可通过编译C标准库中“隐式转换为void*”已被“隐式转换为bool”取代而operator bool总是返回operator的反相。 将Smart Pointers转换为Dumb Pointers 如果为smart pointer-to-T template加上一个隐式类型转换函数便可转换为dumb pointer-to-T Templateclass T class DBPtr { public:...operator T*() const; //新增的转换操作符... };DBPtrTuple pt; ... normalize(pt); //现在这就成功了//nullness测试问题也一并解决了 if(ptn 0) ... //可以 if(ptn) ... //可以 if(!ptn) ... //可以与设计smart pointer目的相违背也不要提供对dumb pointer的隐式转换操作符除非不得已 Smart Pointers和“和继承有关的”类型转换 我们真正想要知道的是如何能够将“smart pointers classes的行为”在“与继承相关类型转换”上能够和dumb pointers一样。答案很简单不能够。 smart pointers虽然smart却不是pointers我们所能做的最好情况就是使用member templates来产生转换函数然后再在其中出现模棱两可的时候使用转型动作。 Smart Pointers 与 const smart pointers中const只能施行于指针身上不能用于其所指的对象 类型转换如果涉及const便是一条单行道从non-const 转换成const是安全的从const 转换成non-const则不安全。此外能够对const做的任何事情也都可以对non-const指针进行。 和public inheritance的规则类似可以利用 实现smart pointers时令一个smart pointer-to-T class公开继承一个对应的smart pointer-to-const-T class: templateclass T class SmartPtrToConst { public:... //一般都会有smart pointer member//functionsprotected:union{const T* constPointee; //给SmartPtrToConst使用T* pointee; //给SmartPtr使用}; };templateclass T class SmartPtr:public SmartPtrToConstT {... //没有data members }
http://www.hkea.cn/news/14258416/

相关文章:

  • dede网站名称更改不了怎样建设公司网站小程序
  • wordpress tag页面优化seo优化一般包括哪些内容
  • 个人备案可以做盈利网站吗wordpress的登录页
  • 电子商务网站平台开发建设方案html居中代码
  • 效果好的网站建设公搜索引擎关键词的工具
  • 网站开发虚拟主机是什么网站下载免费软件安装
  • 想注册一个设计网站吗wordpress 链接添加
  • 做水果网站特点分析报告wordpress破解插件
  • 福建省交通建设质量安全监督局网站wordpress文章来源
  • 企业网站官网模板电影网站做静态是不是好一些
  • 椒江建设网站新吴区推荐做网站电话
  • 合肥最好的网站建设公司哪家好做一个网站 多少钱
  • 非交互式网站可以做商城吗如何做网站需求表格清单
  • wordpress下载安装是英文茂名网站建设优化
  • 公司注销后 网站备案吗济南市莱芜区都市网
  • 临沂网站设计公司网页美工设计基础
  • 推广注册app拿佣金平台网站推广优化淄博公司
  • 网站开发是做什么长沙公司建设网站
  • 网站建设的步骤过程如何用dw制作网页文字链接
  • 网站右键禁止中国苏州网
  • 有建设网站的软件吗wordpress文章标题总有网站名
  • 东莞建设网官方网站长沙做网站开发哪里好
  • 做网站需要招什么渠道网络是什么意思
  • 电商网站建设外包费用网站备案和域名备案一样吗
  • 凡科网站建设如何植入代码加盟培训网站建设
  • 网站建设的功能都需要有哪些方面中国建设银行下载
  • 素材网站排行榜前十名网站的建设过程
  • 网站很卡如何优化wordpress博客文章导出
  • 网站ico图标放在哪里网站制作与app开发哪个要难一点
  • 东莞网站建设都找菲凡网络建站平台那个好