【发布时间】:2017-10-03 12:27:50
【问题描述】:
假设我有一个数组a,它包含指向B 类对象的指针。假设a[0] 指向对象c。
如果我现在设置a[0] = nullptr,如果c 在堆栈上构造并且a[0] 是唯一引用c 的东西,那么c 的destructor 是否会被调用并因此c 被销毁。
【问题讨论】:
-
那些是智能指针吗?
-
取决于范围(还有很多其他事情)。请添加一些实际代码,而不是对其进行描述。
-
你所做的只是一个简单的任务。不会破坏对象(但可能是泄漏)。和
int a; a = 5; a = 0;基本一样,如果对象c在栈上,那么超出范围就会被销毁。 -
更大的问题:如果
c是在堆栈上构造的(并且尚未被销毁),那么数组中的指针怎么可能是唯一引用它的东西? -
请创建一个minimal reproducible example。不要描述代码。发布实际代码。