相关疑难解决方法(0)

手动调用析构函数总是一个糟糕的设计标志?

我在想:他们说如果你手动调用析构函数 - 你做错了什么.但情况总是这样吗?有反例吗?有必要手动调用它或者难以避免的情况/不可能/不切实际的情况吗?

c++ destructor coding-style

73
推荐指数
6
解决办法
9万
查看次数

明确地调用析构函数

我知道在大多数情况下,我们不应该明确地调用析构函数.但是,我在C++ 11 Standard N3485第13.4.5节模板参数中看到了一个例子:

对具有类模板特化的类型的对象的显式析构函数调用可以显式指定template-arguments.例:

template<class T> struct A {
    ~A();
}; 

void f(A<int>* p, A<int>* q) {
    p->A<int>::~A();      // OK: destructor call
    q->A<int>::~A<int>(); // OK: destructor call
}
Run Code Online (Sandbox Code Playgroud)

在我看来,在这种情况下我们可以明确地调用析构函数,你能解释一下为什么吗?在这个例子中,这些析构函数的含义是什么意思?为什么他们合理?

另一个问题:

除了我们实现之外,我们可以明确地调用析构函数的情况是什么placement delete

谢谢.

编辑:我从C++ FAQ中发现,我们不应该在局部变量上显式调用析构函数.

c++ destructor

44
推荐指数
2
解决办法
8万
查看次数

标签 统计

c++ ×2

destructor ×2

coding-style ×1