gpt4 book ai didi

c++ - 我可以为 const 和非常量实例编写不同的 copyCtor 吗?

转载 作者:可可西里 更新时间:2023-11-01 18:36:05 24 4
gpt4 key购买 nike

我有以下问题:

我有一个类应该这样做:

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

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

编辑:

直接使用 o.clone() 不是一种选择,因为那样我很容易因不小心克隆而引入错误。

编辑:

最后,使用来自 Scott Meyers 的 Effective C++ 的想法,有一个适当的、完整的解决方案,其中包含惰性评估。在下面查看我的回答。

最佳答案

不,你不能。

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

此外,如果可能的话,我会发现它真的令人困惑。只需制定适合您需要的方法,并以明确的方式命名它们即可。

关于c++ - 我可以为 const 和非常量实例编写不同的 copyCtor 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13343718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com