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

企业商城建站自学学网页设计

企业商城建站,自学学网页设计,wordpress时光轴,微信怎么做链接网站🍉 重点:编译器生成构造函数的四种情况,如何避免copy constructor在子类多个调用 当我们指定一个class object给另一个class object时,通常有三种选择: 什么都不做,实施默认的行为。 提供一个explicit copy assignme…
🍉 重点:编译器生成构造函数的四种情况,如何避免copy constructor在子类多个调用

当我们指定一个class object给另一个class object时,通常有三种选择:

  1. 什么都不做,实施默认的行为。

  2. 提供一个explicit copy assignment operator。

  3. 显式地拒绝指定一个class object给另一个class object,声明为private(并且此时不同函数的定义,一旦某个member function或friend企图影响一份拷贝,程序链接时就会失败)。

利用Point class来帮助讨论:

class Point {
public:Point(float x = 0.0, float y = 0.0);
private:float _x, _y;
};

如果不对class point提供copy assignment operator,光是依赖默认的memberwise copy,编译器不会产生出一个实例,因为此class已经有了bitwise copy语意,所以implicit copy assignment operator被视为毫无用处,根本不会合成出来。

一个class对于默认的copy assignment operator,在以下情况下,不会表现出bitwise copy语意

  • 当class内含一个class object,而其class有个copy assignment operator时

  • 当一个class的base class有个copy assignment operator是

  • 当一个class声明了任何virtual function(一定不要拷贝右端class object的vptr地址,因为他可能是一个derived class object)时

  • 当一个class继承自一个virtual base class(不论base class有没有copy operator)时

如果没有为Point3d设定一个copy assignment operator,编译器就会为其合成一个:

inline Point3d&
Point3d::operator=(point3d* this, const Point3d& p) {this->Point::operator=(p);  //base class operator=_z = p._z;  //memberwise copyreturn *this;
}

copy assignment operator缺乏一个member assignment list,类似于成员初值列,比如

inline Point3d&
Point3d::operator=(const Point3d& p): Point(p), _z(p._z) { }    //这是不支持的,只能写成上面合成的形式

缺少 member assignment list,编译器一般就没有办法压抑上层 base class 的 copy operator 被调用。还是考虑之前的继承体系,类 Vertex 虚拟自 Point ,并且从 Point3d 和 Vertex 派生出Vertex3d。则copy operator 如下:

inline Vertex&
Vertex operator=(const Vertex& v) {this->Point::operator=(v);_next = v._next;return *this;
}
inline Vertex3d&
Vertex operator=(const Vertex3d& v) {this->Point::operator=(v);this->Point3d::operator=(v);this->Vertex::operator=(v);return *this;
}

编译器如何在 Point3d 和 Vertex 的 copy assignment operator 压制 Point 的 copy assignment operator呢?constructor 中的解决办法是添加一个额外的参数 __most_derived。解决办法是:为copy assignment operator 提供分发函数(split functions)以支持这个 class 称为 most-derived class或者成为中间的 base class。

尽可能不要允许一个 virtual base class 的拷贝操作,更进一步,不要在任何 virtual base class 中声明数据


文章转载自:

http://Z3mbuIg5.tkqzr.cn
http://2SzbAPpP.tkqzr.cn
http://hZBIYY75.tkqzr.cn
http://KEC6BabJ.tkqzr.cn
http://SlSDz1Be.tkqzr.cn
http://gCLqQ2BH.tkqzr.cn
http://MvEbiZ3S.tkqzr.cn
http://MYQTAc5a.tkqzr.cn
http://UfbgNtBG.tkqzr.cn
http://A9zA5P2t.tkqzr.cn
http://ddxiVVrc.tkqzr.cn
http://H376KENE.tkqzr.cn
http://fjPwGfzo.tkqzr.cn
http://dLPa9b2Y.tkqzr.cn
http://W7mQ7Xjm.tkqzr.cn
http://xFGqYVNE.tkqzr.cn
http://w5ZHHnoG.tkqzr.cn
http://tCziC3TA.tkqzr.cn
http://ReBfB1uK.tkqzr.cn
http://2tnhWdH3.tkqzr.cn
http://kgZSDcw2.tkqzr.cn
http://R8NGiffy.tkqzr.cn
http://toKcH9hZ.tkqzr.cn
http://XLSETJ2F.tkqzr.cn
http://iNSLWkFR.tkqzr.cn
http://EyOR3Cjj.tkqzr.cn
http://VIIIw2rx.tkqzr.cn
http://Jm1v6INg.tkqzr.cn
http://8XcHqUgL.tkqzr.cn
http://PPXbuE0N.tkqzr.cn
http://www.dtcms.com/wzjs/700422.html

相关文章:

  • hao爱做网站网站建设 美词原创
  • 做网站的那些个人工作室企业网站建设费用需要多少钱
  • 全面的基础微网站开发无锡高端网站设计建设
  • 五金东莞网站建设技术支持医院网站html模板
  • 吉林省建设厅官方网站网站建设的发展趋势
  • 密云郑州阳网站建设智慧团建手机登录端口
  • discuz 做论坛与网站迪庆企业网站建设公司
  • 做微新闻怎么发视频网站做网站推广好吗
  • 做网站需要准备什么材料做网站多钱
  • 网站建设文件名网站开发需要客户做什么
  • 清河做网站哪家好学服装设计后悔了
  • 网站开发工程师证成都网页设计培训班
  • 制作网站的公司还能赚钱吗视频制作素材
  • 最新wordpress知更鸟seo外包公司接单
  • 沧县网站制作价格erlang做网站优势
  • 网站建设和优化内容最重要性网络营销主要是什么
  • wordpress能做分类信息网站徐州网站建设公司哪家好
  • 江苏省住房城乡建设部网站公司注册商标的流程及资料
  • 网站列表功能陕西省建设网页企业信息
  • 青岛出版集团网站北师大网页制作与网站建设
  • 网站建设行内资讯WordPress 斗鱼
  • 美工好的网站清华大学网站建设方案
  • 加强信息管理 维护网站建设wordpress登录之后强制绑定邮箱
  • s001网站建设公司后台管理网页界面设计
  • 元氏县城有做网站广告的吗网站建设公司.
  • 专业营销网站带客app开发公司概况
  • 网站规划建设与管理维护大作业php mysql开发的网站开发
  • 360免费做网站南京网站推广¥做下拉去118cr
  • 网站建设心得感想升级wordpress无法创建目录
  • 建网站公司的资质需要哪些wordpress appcan-wp