网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

C++怎么实现拷贝的效果

这篇文章主要讲解了“C++怎么实现拷贝的效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++怎么实现拷贝的效果”吧!

创新互联从2013年成立,先为金台等服务建站,金台等地企业,进行企业商务咨询服务。为金台企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

C.61:拷贝操作应该具有拷贝的效果

Reason(原因)

这是一个约定俗成的语义。当x=y被执行之后,我们应该也可以认为x==y。拷贝动作之后,x和y可以是独立的两个对象(值语义,象非指针内置类型和标准库类型那样)或者同一个共享对象的不同参照(指针语义,象指针的行为那样)。

   
Example(示例)
class X {   // OK: value semantics
public:
   X();
   X(const X&);     // copy X
   void modify();   // change the value of X
   // ...
   ~X() { delete[] p; }
private:
   T* p;
   int sz;
};

bool operator==(const X& a, const X& b)
{
   return a.sz == b.sz && equal(a.p, a.p + a.sz, b.p, b.p + b.sz);
}

X::X(const X& a)
   :p{new T[a.sz]}, sz{a.sz}
{
   copy(a.p, a.p + sz, p);
}

X x;
X y = x;
if (x != y) throw Bad{};
x.modify();
if (x == y) throw Bad{};   // assume value semantics
   
Example(示例)
class X2 {  // OK: pointer semantics
public:
   X2();
   X2(const X2&) = default; // shallow copy
   ~X2() = default;
   void modify();          // change the pointed-to value
   // ...
private:
   T* p;
   int sz;
};

bool operator==(const X2& a, const X2& b)
{
   return a.sz == b.sz && a.p == b.p;
}

X2 x;
X2 y = x;
if (x != y) throw Bad{};
x.modify();
if (x != y) throw Bad{};  // assume pointer semantics
Note(注意)

除非你在构建某种“智能指针”,否则值语义更好。值语义最容易理解而且也是标准库功能期待的。

感谢各位的阅读,以上就是“C++怎么实现拷贝的效果”的内容了,经过本文的学习后,相信大家对C++怎么实现拷贝的效果这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


名称栏目:C++怎么实现拷贝的效果
文章网址:http://bjjierui.cn/article/joidgi.html

其他资讯