普遍认为C++标准库不适合使用继承进行扩展。当然,我和其他人都批评那些建议从类(如std::vector
)派生的人。然而,这个问题:c++ exceptions, can what() be NULL? 让我意识到标准库中至少有一个部分是打算通过继承来扩展的——std::exception
。
因此,我的问题有两个部分:
是否还有其他标准库类旨在被派生?
如果从标准库类(例如
std::exception
)派生,是否受到ISO标准所描述的接口的限制?例如,使用一个异常类,其what()
成员函数未返回NTBS的程序(例如返回空指针)是否符合标准?
std::stack
和std::queue
这类拥有 protected 成员的类,因为保护成员仅是为了允许子类读取数据。当然,在操作时需要非常小心。 - Evan Teran