我们(应该)知道 C++ 标准库容器,包括 std::string
,并不意味着继承自。但是,C++98/03 确实允许我们这样做,即使它会导致错误。
既然 final
关键字可用,那些标准库容器是否标记为 final
以防止对它们的不良使用继承?
如果不是,那是为什么?
最佳答案
LWG 在最近于 2012 年 2 月 6 日至 10 日在科纳举行的 session 上讨论了这个问题。我是 LWG issue 2113 .
LWG 决定将 LWG 2113 标记为 NAD(不是缺陷),理由是标准已经明确现有类(如容器和 std::string
不能标记为 final)通过实现。
讨论包括这样一个事实,虽然从这些类派生可能不受欢迎,但在 C++98/03 中这样做显然是合法的。在 C++11 中使其非法会破坏太多代码。
更新
此时,current working draft 中没有库类型。被标记为final
。
关于c++ - C++11 标准容器是 "final"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9298450/