我可以为 const 和非 const 实例编写不同的 copyCtor 吗?

2024-06-28

我有以下问题:

我有一堂课应该这样做:

Obj o;
Obj o1(o), o1=o; // deep-copies
const Obj c(o), c=o; // deep-copies
const Obj c1(c), c1=c; // shallow-copies
Obj o2(c), o2=c; // deep-copies

在没有继承的情况下我怎样才能更好地做到这一点? (我的意思是我会做Const_obj继承自Obj否则。)

EDIT:

Using o.clone()直接不是一个选择,因为这样我很容易意外地引入错误not克隆。

EDIT:

最后,有一个正确、完整的解决方案,使用来自的想法进行惰性评估有效的 C++ 作者:Scott Meyers。看看我下面的回答。


不,你不能。

  • 构造函数不能是 cv 限定的,因此您不能强制它构造 const 对象。
  • 函数的返回类型(包括运算符)不是其签名的一部分,因此您不能仅通过更改返回类型来重载函数。

另外,如果可以的话,我会找到它really令人困惑。只需创建适合您需要的方法,并以明确的方式命名它们即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以为 const 和非 const 实例编写不同的 copyCtor 吗? 的相关文章

随机推荐