2013-07-15 114 views
-1

我想释放在类销毁成员对象

class A 
{ 
    A() {} //Constructor 
    //Other Definitions go here 
} 

Class B 
{ 
    B(){} //Constructor 
    ~B() 
{ 
    //what should I do to release the memory location of A's object 
    //Shall I call default destructor of A 
} 
private: 
A objA; 
} 
+3

无所事事是最好的。 – chris

+0

它会自动释放,除非你用'new'动态分配它(在这种情况下,你需要''删除它)。 – Nbr44

+1

A的析构函数会自动被调用。 –

回答

3

你不需要做任何事情来释放由objAB类占用​​的内存中定义的对象的内存。当B对象的内存被释放时,内存自动释放。

在不破坏包含objAB对象的情况下,您无法在B类中释放objA占用的内存。

您可以显式调用objA的析构函数,但不会释放任何内存。之后您访问objA时只会导致未定义的行为。而最有可能的是objA将在之后被访问,因为当C++运行时破坏B对象时,它将调用objA的析构函数。