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