gpt4 book ai didi

C++ 虚拟析构函数从 std::vector 继承

转载 作者:行者123 更新时间:2023-12-02 14:38:00 25 4
gpt4 key购买 nike

我正在准备 C++ 考试,我遇到了以下问题:

If you were to inherit from std::vector would you create a virtual destructor?

由于 std::vector 没有虚拟析构函数,我创建一个虚拟析构函数还有什么意义吗?

最佳答案

我认为std::vector是一个转移注意力的话题。首先让我将问题重写为

If you were to write a class A that inherits from std::vector, would you give it a virtual destructor?

那么这里唯一相关的是 std::vector 是否已经有一个虚拟析构函数。如果有的话,A 的析构函数将始终自动为 virtual,无论您是否使用 virtual 关键字指定它。但是 std::vector 没有虚拟析构函数。因此可以删除对它的引用:

If you were to write a class A, would you give it a virtual destructor?

答案仍然是,如果 A 从具有虚拟析构函数的任何其他类继承,它将自动成为虚拟的,因此剩下的唯一有趣的情况是:

If you were to write a class A, which does not inherit from any class with virtual destructor, would you give it a virtual destructor?

现在这是一个非常普遍的问题,正如评论中提到的,这取决于您是否打算使用该类作为多态基,即您是否希望允许删除从 A< 派生的类型的对象 通过指向 A 的指针/引用。

关于C++ 虚拟析构函数从 std::vector 继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59591153/

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