【发布时间】:2014-04-24 19:56:35
【问题描述】:
我读到当我们有指针成员和定义基类时需要定义析构函数,但我不确定我是否完全理解。我不确定的一件事是定义默认构造函数是否无用,因为默认情况下总是给我们一个默认构造函数。另外,我不确定我们是否需要定义默认构造函数来实现 RAII 原则(我们是否只需将资源分配放在构造函数中而不定义任何析构函数?)。
class A
{
public:
~Account()
{
delete [] brandname;
delete b;
//do we need to define it?
};
something(){} =0; //virtual function (reason #1: base class)
private:
char *brandname; //c-style string, which is a pointer member (reason #2: has a pointer member)
B* b; //instance of class B, which is a pointer member (reason #2)
vector<B*> vec; //what about this?
}
class B: public A
{
public something()
{
cout << "nothing" << endl;
}
//in all other cases we don't need to define the destructor, nor declare it?
}
【问题讨论】:
-
虽然答案可能是相关的,但问题并不相同。不是重复的。我认为这是一个很好的问题,我想亲自听到答案。
-
你的第二句话有点混乱。我想你的意思是你写构造函数的地方的析构函数?
标签: c++ destructor