在C++中,我有一个类,它是通过使用 new[]
所以我把destructor写成了下面的样子。
Matrix::~Matrix() {
delete[] data;
}
我的 Matrix
类中包含的字段称为 complex
属于 Complex
我写的。
我的问题是,我是否应该调用我写的 complex
也是,怎么做?
不,外类的析构器调用内部数据成员的析构器。
如果你编译并运行下面的代码,你会发现,外类的析构函数调用了内部数据成员的析构函数。A
,内部数据成员的类被调用,尽管它没有在 B
破坏者
#include <iostream>
struct A{
~A(){
std::cout << "A des\n";
}
};
struct B{
A a;
~B(){
std::cout << "B des\n";
}
};
int main(){
B b;
}
出
B des
A des
我的问题是,我是否也应该调用复杂体的析构函数,如何调用?
不,你不需要调用destructor。这就是 new
delete
;他们调用constructorsdestructors。
说了这么多,考虑到你似乎是C++的新手,强烈建议你使用 std::vector<Complex>
或 std::unique_ptr<Complex[]>
而不是原始指针。一些原因是。
delete
delete[]
不匹配。vector
可以更容易地调整大小复制。