Mar*_*ark 0 c++ pointers destructor
即使我在C++中为类重新定义了析构函数,是否可以调用默认的析构函数?例如,如果我有两个班级
class B{
...
};
class A{
private:
B* p;
public:
A(B b):p(new B(b)){...}
...
~A(){delete p;}
};
Run Code Online (Sandbox Code Playgroud)
我并不总是想删除p指向的对象.
假设"标准析构函数"是指您的编译器默认生成的那个,答案是否定的.因为您定义了自己的析构函数,所以编译器根本不会生成默认的析构函数.无论如何,析构函数并不像普通函数那样被"调用"(除非你实现类似STL容器的东西).
如果您需要析构函数在不同情况下执行不同的操作,请在析构函数中放置if(),并让对象跟踪if()条件所需的任何信息.无论如何,这可能是一个更好的设计.