繁体   English   中英

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

[英]Why isn't there a default polymorphic cloning operator mechanism in c++?

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

好处:

  • 避免做Derived * clone() const { return new Derived(*this); } Derived * clone() const { return new Derived(*this); }无处不在

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

什么会冒风险/退税?

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

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

可以提交一个提议添加这样一个基类(以及value_ptr<T, std::default_clone<T> >和合适的特化:))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM