我的意思是一个克隆运算符,它默认使用复制构造函数和new运算符来返回一个新对象。所以如果基类中的声明是虚拟,它会自动提供多态克隆机制(默认情况下任何类都不应该是虚拟的)
优点:
避免在任何地方Derived * clone() const { return new Derived(*this); }
允许标准智能指针(如std::unique_ptr
或专用的可复制指针)克隆对象,而不依赖于非标准语义
会有风险/缺点吗?
答案 0 :(得分:7)
因为,支付你需要的东西(如果它是任何类型的自动,那么所有类都是虚拟的。)
没有什么能阻止您将其作为CRTP基类实现,因此不需要语言支持。
您可以提交添加此类基类的提案(以及value_ptr<T, std::default_clone<T> >
和合适的专业化):)