[英]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.