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