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

如何制作电脑公司网站搜索引擎排名2020

如何制作电脑公司网站,搜索引擎排名2020,网站建设推广营销策划,企业电子网站建设🍉 重点:编译器生成构造函数的四种情况,如何避免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://www.dtcms.com/wzjs/276655.html

相关文章:

  • 17做网站广州起做网店百度关键词排名手机
  • 做网站准备什么问题为什么中国禁止谷歌浏览器
  • wordpress主题 论坛长沙seo排名扣费
  • asp做网站的步骤网站模板商城
  • 商城首页设计链接优化方法
  • 团员个人信息查询官网成都网站优化及推广
  • 温州做阀门网站公司关键词怎么优化
  • 仪征做网站公司上海关键词优化排名哪家好
  • 郑州网站建设哪家最好b站视频怎么快速推广
  • 洛阳便宜网站建设费用巩义网站优化公司
  • 网站建设计划书范文找索引擎seo
  • 建个网站做网络推广要花多少钱网站服务器软件
  • 唐山公司网站建设 中企动力唐山游戏代理加盟
  • 福建省龙岩市建设培训中心网站杭州网络推广外包
  • net网站建设多少前网络推广平台软件
  • 郴州网站维护创建自己的网页
  • 免费网站java网站建设与网页设计制作
  • 深圳手机网站开发百度收录网站提交入口
  • 快速做网站公司报价网站构建的基本流程
  • 辽宁省建设厅特种工查询网站免费行情软件网站下载
  • 做网站为什么要用php框架线上推广方式
  • 网站不备案能解析吗高德北斗导航
  • wordpress显示全英文关键词排名优化公司地址
  • 免费网站建设软件怎么才能让百度收录网站
  • 北京做vr网站长沙优化网站推广
  • 中职学校网站建设情况总结利于seo的建站系统有哪些
  • 长沙做网站seo公司上海百度首页优化
  • 日本人做鸭网站zac seo博客
  • wordpress虚拟插件百度seo优化是做什么的
  • 如何做网站跳转全球搜效果怎么样