【问题标题】:Scalar deleting destructor标量删除析构函数
【发布时间】:2013-04-27 13:50:54
【问题描述】:

我有一段代码(来自 DLL),如下所示:

class A {
    public:
        virtual ~A();
};

class B : public A {
    public:
        ~B();
}

~A() {
    // #1
}

~B() {
    // #2
}

当我使用delete an_instance_of_B 时,我得到scalar deleting destructor。有什么解决方法吗?

【问题讨论】:

    标签: c++ polymorphism destructor scalar delete-operator


    【解决方案1】:

    不要将delete 用作B 的实例。您应该在指向使用new 分配的对象的指针上使用delete

    B b;
    delete b;   //wrong
    
    //.........
    
    B* pB = new pB;
    delete pB;  //okay
    
    //.........
    
    B justThis; //best
    

    【讨论】:

    • @dan 在问题中发布调用堆栈,以及一些实际代码。
    猜你喜欢
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 2012-02-12
    • 2012-08-11
    • 2012-03-13
    • 2017-04-06
    • 2013-09-30
    • 2020-10-18
    相关资源
    最近更新 更多