当我参与一个涉及用给定语言定义句子的项目时,我惊讶地发现std::string
析构函数不是虚拟的。这使得专门化这个类变得更加困难(我必须创建一个包装器)。为什么标准委员会决定让这个课程不虚拟?
在/usr/lib64/gcc/x86_64-pc-linux-gnu/4.5.3/include/g++-v4/bits/basic_string.h中,我们有:
template<typename _CharT, typename _Traits, typename _Alloc>
class basic_string
{
...
/**
* @brief Destroy the string instance.
*/
~basic_string()
{ _M_rep()->_M_dispose(this->get_allocator()); }
答案 0 :(得分:9)
这是设计的。我认为设计师暗示这个班级不应该被分类。
答案 1 :(得分:3)
这并不意味着从中衍生出来。没有标准类。
经过批准的增强方法是封装,而不是继承。