簡體   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