[英]Are C++11 standard containers “final”?
我們(應該)知道C ++標准庫容器,包括std::string
,並不意味着繼承自。 但是,C ++ 98/03確實允許我們這樣做,即使它導致了錯誤。
既然final
關鍵字可用,那些標准庫容器是否標記為final
以防止對它們的繼承使用不當?
如果沒有,為什么?
std::string
似乎沒有標記為final,其他容器也沒有。
我猜測為什么會這樣,即使從它們推導出來也不是一般的推薦,沒有人確定如果它被禁止會破壞多少工作代碼。
還要注意,對於它的價值而言, final
在技術上並不是一個關鍵詞 - 它是附加了特殊含義的標識符,但僅限於特定情況。 包含類似int final; final = 1;
代碼int final; final = 1;
int final; final = 1;
仍然有效。 這主要是為了向后兼容 - 至少在新代碼中,使用final
僅用於特殊含義,而不是普通標識符幾乎肯定更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.