C++;和析构函数(嵌套类和一般问题) 我正在研究C++中的二叉树的实现。我对该语言相当陌生,虽然我了解什么是结构和析构函数,但我不确定嵌套类/结构会发生什么

C++;和析构函数(嵌套类和一般问题) 我正在研究C++中的二叉树的实现。我对该语言相当陌生,虽然我了解什么是结构和析构函数,但我不确定嵌套类/结构会发生什么,c++,struct,destructor,C++,Struct,Destructor,在我的实现中,我的二进制节点有一个嵌套结构。这个结构是否需要自己的析构函数,或者在调用二叉树本身的析构函数时删除所有节点。如果我将结构更改为类,答案是否会更改 另外,我被告知,如果在类中调用“new”,则需要在析构函数中调用“delete”。如果在类的初始化列表中初始化一个数组(即类:数组({ 0 })),是否需要在我的析构函数中删除[]数组?< /p> ,C++中没有必要定义类结构中的析构函数。 若要将struct更改为class,则析构函数中并没有任何更改。 但如果我们用new调用内存,我们

在我的实现中,我的二进制节点有一个嵌套结构。这个结构是否需要自己的析构函数,或者在调用二叉树本身的析构函数时删除所有节点。如果我将结构更改为类,答案是否会更改


另外,我被告知,如果在类中调用“new”,则需要在析构函数中调用“delete”。如果在类的初始化列表中初始化一个数组(即类:数组({ 0 })),是否需要在我的析构函数中删除[]数组?< /p> ,C++中没有必要定义类结构中的析构函数。 若要将struct更改为class,则析构函数中并没有任何更改。 但如果我们用new调用内存,我们必须自己删除它,这对编程语言是有好处的。 若要定义嵌套类,最好在该类中也使用析构函数


不需要使用Delaby[]数组。

,C++中没有必要定义类结构中的析构函数。 若要将struct更改为class,则析构函数中并没有任何更改。 但如果我们用new调用内存,我们必须自己删除它,这对编程语言是有好处的。 若要定义嵌套类,最好在该类中也使用析构函数

无需使用delete[]for array。

将一个类(或结构)嵌套在另一个类(或结构)中不会影响对象的生存期。它所做的只是为类的名称提供一个作用域,并访问封闭类中的私有成员。因此,树节点不会因为嵌套在树类中而自动销毁

如果要在树本身被销毁时销毁树的节点,则需要确保树的析构函数执行此操作。如果要使用
new
手动分配节点,请在析构函数中使用
delete
(或
delete[]
)。或者,您可以使用类似于
std::auto_ptr
(或C++11中的
std::unique_ptr
)的东西,它将在自己的析构函数中进行清理,这样您就不必自己编写
delete
调用

将结构更改为类不会影响其运行时的行为。C++中结构和类的唯一区别是,结构体的隐含性始于 Pube:,类的体隐式地开始于 Buy: .

嵌套一个类(或结构)在另一个类中对对象的生命周期没有影响。它所做的只是为类的名称提供一个作用域,并访问封闭类中的私有成员。因此,树节点不会因为嵌套在树类中而自动销毁

如果要在树本身被销毁时销毁树的节点,则需要确保树的析构函数执行此操作。如果要使用
new
手动分配节点,请在析构函数中使用
delete
(或
delete[]
)。或者,您可以使用类似于
std::auto_ptr
(或C++11中的
std::unique_ptr
)的东西,它将在自己的析构函数中进行清理,这样您就不必自己编写
delete
调用

将结构更改为类不会影响其运行时的行为。C++中结构和类的唯一区别是,结构体的隐含性始于<代码>公共:,类的主体隐式地从私下开始: ./P>