删除一个对象,然后通过std :: function调用它的方法。有用!但为什么?

时间:2015-02-01 18:30:07

标签: c++ std-function stdbind

我运行此代码段来测试问题:

#include <iostream>
#include <functional>
using namespace std;

class A
{
private:
    int i;

public:
    A(): i(0) {}    

    void doSomething()
    {
        cout << "do something " << i << endl;
    }
};

int main() {

    A* a = new A();
    function<void()> func = std::bind(&A::doSomething, a);

    delete a;
    a = nullptr;

    func();

    return 0;
}

得到了输出:

do something 0

有人可以帮我解释为什么我们可以在删除对象后调用对象方法吗?

0 个答案:

没有答案