0

我不确定这意味着什么:

virtual ~Optimizer() {
    JNIEnv *env = getJNIEnv();
    env->DeleteGlobalRef(mJavaOptimizer);
    mJavaOptimizer = 0;
}

令我困惑的是,我们删除了全局引用,然后将其设置为 0。删除它还不够吗?为什么分配到 0 部分?

谢谢

4

1 回答 1

2

在这段代码中,在 C++ 析构函数中,它没有实际用途。这只是一种编程模式。

在许多情况下,变量在保持有效值之前或之后都可以访问(可见)。在那些时间里,它最好保留一个已知值,以便可以测试该值(一个标记值)和/或以定义的方式可靠地捕获它的误用(例如,空指针与坏指针)。

将变量设置为标准的无效值也可以作为操作刚刚使先前值无效的注释,这从立即代码的读取中可能并不明显。

于 2013-07-25T12:27:37.003 回答