![]() |
1
46
通常在引用计数的类中发现,当ref计数减为0时
|
![]() |
2
16
唯一的危险是在调用“delete this”后试图访问任何其他成员数据。这当然是不安全的。 |
![]() |
3
14
|
![]() |
4
13
删除此项是完全合法的,正如其他人已经提到的。这是有风险的,还有一个原因尚未提及——您假设对象已在堆上分配。这可能很难保证,尽管在引用计数实现的情况下通常不是问题。 |
![]() |
5
6
正如其他人所说,delete这是一个有效的习惯用法,但为了安全起见,您必须确保对象从未在堆栈上实例化。
|
![]() |
6
3
对应该很好。“This”只是一个指针。任何指针都可以删除。有关如何删除对象的信息包含在堆记录中。这就是IUnknown::Release()通常在COM对象中实现的方式。 |
![]() |
7
3
删除当您有要删除的对象的子类时,这可能会导致问题。请记住,构造从上到下开始,删除从下到上开始。因此,如果删除这是在层次结构的中间,则基本上失去了这个特定类下面的所有对象。 删除当您实现引用计数对象时,这非常方便,COM类就是一个例子。 |
![]() |
8
2
Read 进行类似的讨论。您的理解是正确的,因为它确实有效,是需要的,并且可能是危险的,因为您以后无法访问它。 |
![]() |
9
2
法律上是的
|
![]() |
10
-2
|