让我们说我有一个数组a
,它包含指向类B
的对象的指针。让我们说a[0]
指向对象c
。
如果我现在设置a[0] = nullptr
,那么destructor
的{{1}}会被调用,因此c
如果在堆栈上构建了c
并且c
被a[0]
唯一引用c
的东西。
答案 0 :(得分:1)
如果你引用常规指针(Obj * ptr),那么因为赋值,c的d'tor将不会被称为。如果有像 -
这样的代码,可能会调用它... // Some code and initialization before
{
Obj c;
a[0] = &c;
a[0] = NULL; //c isn't affected in any way by this assignment
} //End of scope. **c's d'tor is called here**
虽然,如果在堆上分配了c,那么它的内存就会泄露