2

次のような(DLLからの)コードがあります。

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

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

~A() {
    // #1
}

~B() {
    // #2
}

使用するdelete an_instance_of_Bと が得られscalar deleting destructorます。回避策はありますか?

4

1 に答える 1

10

deleteのインスタンスにしないでくださいBdeleteで割り当てられたオブジェクトへのポインターで使用することになっていますnew

B b;
delete b;   //wrong

//.........

B* pB = new pB;
delete pB;  //okay

//.........

B justThis; //best
于 2013-05-03T08:03:19.603 に答える