gpt4 book ai didi

c++ - boost 的虚拟析构函数 :noncopyable classes?

转载 作者:可可西里 更新时间:2023-11-01 16:58:44 25 4
gpt4 key购买 nike

我对以下代码有疑问:

class MyClass : private boost::noncopyable
{
public:

MyClass() {}
virtual ~MyClass() {}
}

class OtherClass : private boost::noncopyable
{
private:
MyClass* m_pMyClass;
}

我的想法是不能使用构造或赋值来复制 MyClass。如果我想支持从我不想支持的 MyClass 派生类,则需要使用虚拟析构函数。我不打算创建指向此类的指针并传递它们。

我不想要单例,而且我看不出删除虚拟析构函数有什么坏处。

如果删除不可复制类的虚拟析构函数,是否会引入潜在问题?有没有更好的做法来处理不需要是单例的类,但我只想要另一个类中的一个实例并且不支持继承?

最佳答案

不,虚拟析构函数的全部意义在于派生类可以正确地进行多态析构。如果这永远不会是基类,则不需要它是虚拟的。

关于c++ - boost 的虚拟析构函数 :noncopyable classes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2052224/

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