为什么c ++中没有默认的多态克隆运算符机制?

时间:2014-06-06 07:27:45

标签: c++ copy standards cloning

我的意思是一个克隆运算符,它默认使用复制构造函数和new运算符来返回一个新对象。所以如果基类中的声明是虚拟,它会自动提供多态克隆机制(默认情况下任何类都不应该是虚拟的)

优点:

  • 避免在任何地方Derived * clone() const { return new Derived(*this); }

  • 允许标准智能指针(如std::unique_ptr或专用的可复制指针)克隆对象,而不依赖于非标准语义

会有风险/缺点吗?

1 个答案:

答案 0 :(得分:7)

因为,支付你需要的东西(如果它是任何类型的自动,那么所有类都是虚拟的。)

没有什么能阻止您将其作为CRTP基类实现,因此不需要语言支持。

可以提交添加此类基类的提案(以及value_ptr<T, std::default_clone<T> >和合适的专业化):)