相关疑难解决方法(0)

删除指针后将指针NULL化是一种好习惯吗?

我首先要说的是,使用智能指针,你永远不必担心这一点.

以下代码有什么问题?

Foo * p = new Foo;
// (use p)
delete p;
p = NULL;
Run Code Online (Sandbox Code Playgroud)

这是由另一个问题的回答和评论引发的.Neil Butterworth的一条评论产生了一些赞成:

在删除后将指针设置为NULL不是C++中的通用优良做法.有时候它是一件好事,有时它是毫无意义的,可以隐藏错误.

有很多情况下它无济于事.但根据我的经验,它不会伤害.有人开导我.

c++ null pointers dynamic-allocation

139
推荐指数
6
解决办法
8万
查看次数

如何在Turbo C++中显式调用类的析构函数

我试图在Turbo C++中显式调用类的析构函数:

A a;
a.~A();
Run Code Online (Sandbox Code Playgroud)

但它显示错误:

预期成员标识符.

有没有办法在Turbo C++中显式调用析构函数?

c++ destructor compiler-errors turbo-c++

4
推荐指数
2
解决办法
1114
查看次数

在调用对象的析构函数时,它被调用两次?

在显式调用析构函数时,它会执行两次.这是什么原因?

#include <iostream>
using namespace std;

class A
{
    public:
        int x;

        A() { cout << "A's constructor called " << endl;  }

        ~A(){
            cout<<"A's desctructor called "<<endl;
        }
};

int main()
{
    A a;
    A b;
    a.~A();
}
Run Code Online (Sandbox Code Playgroud)

输出:

称为A的构造
A的desctructor称为
叫A的desctructor

c++ destructor

4
推荐指数
2
解决办法
112
查看次数