【发布时间】:2016-05-02 23:49:27
【问题描述】:
我需要为学校练习编写一个析构函数。我已经尝试为A类编写析构函数,这是对还是错?
练习说析构函数需要像这样开始:
A *pa = .......;
delete pa;
4个类的代码:
Class A
{
private:
vector <B*> b;
vector <C*> c;
public:
~A();
}
Class B
{
private:
vector <D*> d;
public:
~B();
}
Class C
{
private:
vector <D*> d;
public:
~C();
}
Class D
{
private:
vector <A*> a;
public:
~D();
}
我已经尝试为 A 类编写析构函数,
这是正确的方法吗?
~A()
{
for (int i = 0; i < b.size(); i++)
{
B* pa = b[i];
delete pa;
}
for (int j = 0; j < c.size(); i++)
{
C* pa = c[i];
delete pa;
}
【问题讨论】:
-
我可以在你的课堂上看到
new,所以你不需要delete。最好使用智能指针。 -
我假设这些指针是使用
new分配的? -
你也没有
constructor! -
几个小时前你不是已经发布了这个确切的问题吗?请不要多次重新发布完全相同的问题,而是编辑现有问题。这也会将您的问题推到首页的问题列表中。
-
删除未分配的指针会导致未知结果!
标签: c++ pointers vector destructor