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

公司网站的具体的建设方案推广教程

公司网站的具体的建设方案,推广教程,购物中心网站模板,网站制作企业有哪些概述 Clone函数是一种用于复制的计算机函数。在程序编写中#xff0c;除了自定义一个拷贝构造函数来实现对象复制外#xff0c;还可以实现一个clone函数。这需要借助编译器实现的一个隐藏拷贝构造函数#xff0c;这样的做法#xff0c;更省心。 中文名clone函数外文名clon…概述 Clone函数是一种用于复制的计算机函数。在程序编写中除了自定义一个拷贝构造函数来实现对象复制外还可以实现一个clone函数。这需要借助编译器实现的一个隐藏拷贝构造函数这样的做法更省心。 中文名clone函数外文名clone所属学科信息学 基本介绍 在C中要拷贝一个对象除了自定义一个拷贝构造函数来实现对象复制外还可以实现一个clone函数。这需要借助编译器实现的一个隐藏拷贝构造函数这样的做法更省心。 背后的原理是C的原型Prototype模式用原型实例指定创建对象的种类并且通过拷贝这些原型创建新的对象。 Prototype模式提供了一个通过已存在对象进行新对象创建的接口Clone Clone实现和具体的语言相关在C中通过拷贝构造函数实现。 注意clone函数是virtual的无法内联。 示例代码 ​ #include stdafx.h #include iostreamclass CA { public:int value;CA* clone() const { return new CA( *this );}//仅一个构造函数CA(int a ){valuea;} };int _tmain(int argc, _TCHAR* argv[]) {CA* objAnew CA(10);CA* objtempobjA-clone();delete objA;std::coutobjtemp-value;delete objtemp;return 0; } Prototype 模式的应用场景在于你拿到一个 Base* 它指向某个 Derived 对象你想克隆出 Derived 对象但代码中不写出 Derived 的具体类型因为有很多派生类这种情况下你用构造函数是搞不定的就需要Prototype 模式了。 原型模式的作用 1、基本就是你需要从A的实例得到一份与A内容相同但是又互不干扰的实例的话就需要使用原型模式。 2、用原型实例指定创建对象的种类并且通过拷贝这些原型创建新的对象。这个其实和C的拷贝构造函数的作用是相似的但不相同实际上就是动态抽取 当前对象运行时的状态。 Clone方法 关于clone方法 在说明clone方法之前需要对值传递和引用传递有个初步的了解 其中需要注意的是第三条 1基本数据类型传值对形参的修改不会影响实参 2引用类型传引用形参和实参指向同一个内存地址同一个对象所以对参数的修改会影响到实际的对象 3String, Integer, Double等immutable的类型特殊处理可以理解为传值最后的操作不会修改实参对象。其本质上还是引用传递只不过这些类型是不可变类可以理解为传值 在对值传递和引用传递有个初步了解之后我们开始讲解clone方法。 使用clone方法的步骤 1、实现clone的类首先需要继承Cloneable接口以此接口是一个标识接口没有任何接口方法 2、在类中重写Object类的clone方法 3、在clone方法中调用super.clone 这样就可以得到实现clone类的的一个Object对象的复制但这存在一个问题如果这个类中还存在引用类型怎么办在就要对浅复制和深复制说明一下了。 浅复制和深复制 1、类中的成员皆为基本数据类型使用浅复制 2、类中的成员有引用类型此时需注意String, Integer, Double等immutable的类型特殊看待不当成引用类型使用深复制 浅复制和深复制的使用依据实际情况而定 浅复制被复制对象的所有变量都含有与原来对象相同的值引用变量仍然指向原来的对象 深复制被复制对象的所有变量都含有与原来对象相同的值引用引用变量指向被复制对象的新变量 原型模式的优势 一.为什么不用new直接新建对象而要用原型模式 首先用new新建对象不能获取当前对象运行时的状态其次就算new了新对象在将当前对象的值复制给新对象效率也不如原型模式高。 二.为什么不直接使用拷贝构造函数而要使用原型模式 原型模式与拷贝构造函数是不同的概念拷贝构造函数涉及的类是已知的原型模式涉及的类可以是未知的。 原型模式生成的新对象可能是一个派生类。拷贝构造函数生成的新对象只能是类本身。原型模式是描述了一个通用方法(或概念)它不管是如何实现的而拷贝构造则是描述了一个具体实现方法。 class base { public : base(); base(base obj); virtual ~base(); virtual base *clone() { return new base(*this) ; }; }; class derived : public base { public : derived(); derived( derived ); virtual base *clone(){return new derived (*this); } .... }; base *obj1 new base ; base *obj2 new derived ;//基类指针指向派生类对象怎样用基类指针创建一个新的派生类对象 用基类的拷贝构造函数显然不行。 base *obj3 obj1 .clone(); base *obj4 obj12.clone(); 适用场景 1.资源优化场景 类初始化需要消化非常多的资源这个资源包括数据、硬件资源等。 2.性能和安全要求的场景 通过new产生一个对象需要非常繁琐的数据准备或访问权限则可以使用原型模式。 3.一个对象多个修改者的场景 一个对象需要提供给其他对象访问而且各个调用者可能都需要修改其值时可以考虑使用原型模式拷贝多个对象供调用者使用。 缺点 1、配备克隆方法需要对类的功能进行通盘考虑这对于全新的类不是很难但对于已有的类不一定很容易特别当一个类引用不支持串行化的间接对象或者引用含有循环结构的时候。 2、实现原型模式每个派生类都必须实现 Clone接口。 3、逃避构造函数的约束。 参考资料 1  C clone()函数的用法   CSDN2 【Linux内核】Clone函数和Cloneable接口简要说明 3  IT职场笔记   博客园4  关于clone()方法   CSDN5 Pytorch中clone(),copy_(),detach(),.data的辨析与应用  知乎6 java中的clone_51CTO博客
http://www.sadfv.cn/news/283925/

相关文章:

  • 自助建站 源码维护网站需要什么技术
  • 自己做网站卖产品怎么样wordpress翻译插件
  • 云梦建站绵阳门户网站建设
  • 网站个人备案容易过吗伊犁园xyz视频人入口
  • 韶关网站建设第一品牌wordpress 创建数据库
  • 网站开发的方法有哪些外贸营销推广公司
  • 深圳住房和建设局网站置换平台wordpress qq登录微信
  • 企业网站的意义深圳sem竞价托管
  • 小说网站开发背景wordpress music pro
  • 怎么做一个网站熊掌号WordPress推送
  • 工作室网站建设的意义wordpress安卓版教程
  • 社保网站上做减员一直不审核电子商务网站建设参考书
  • 彩票资讯网站建设无刷新wordpress主题
  • 网站制作多少页学校网站开发说明书文档
  • 甘肃网站建设公司电话重庆颐众达网站
  • 做产品推广什么网站会比较好酒业网站模板下载
  • 安徽省建设工程造价管理总站网站手机网站上线左右滑动
  • 厦门在线制作网站怎么配置网站服务器
  • 怎样学网站建设公司网站功能
  • 做娃衣的布料去哪个网站公司图标设计logo
  • 在线优化网站宝安网站建设公司968
  • 阜城网站建设wordpress删除重复文章的三种方法
  • 企业做网站要多少钱济南建筑公司
  • 个性化网站建设开发网站建设组织机构
  • 电商网站数据中心建设方案做网站怎么收集资料
  • 嘉兴模板建站定制网站网站域名备案证书
  • 做电力招聘的有哪些网站宠物网页设计图片
  • 网站定制联通卡做网站注册35类还是42
  • 看守所加强自身网站建设工作总结河南平顶山网站建设公司
  • 景安一个空间怎么做多个网站优设设计网站导航