gpt4 book ai didi

c++ - 为什么 std::string 没有虚拟析构函数?

转载 作者:太空狗 更新时间:2023-10-29 23:33:48 33 4
gpt4 key购买 nike

当我从事一个涉及用给定语言定义句子的项目时,我惊讶地发现 std::string 析构函数不是虚拟的。这使得专门化此类变得更加困难(我必须创建一个包装器)。为什么标准委员会决定不使用虚拟类(class)?

在/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()); }

最佳答案

这是设计使然。我认为设计者是在暗示该类不应被子类化。

再看看这个:Why should one not derive from c++ std string class?

关于c++ - 为什么 std::string 没有虚拟析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9135501/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com