|
|
1
3
@海军:不,你对“毁灭”的理解是错误的。当调用对象的析构函数时,该对象将被销毁。你似乎相信它所保存的记忆完全消失了,但那永远不会发生。对象不再存在,但一些垃圾数据通常被对象遗留下来,如果您愿意打破C++规则并调用未定义的行为,那么您可以读取那些剩余字节,它们将 看起来像 对象,并且由于没有运行时检查您是否正在访问有效的对象,因此通常可以 对待他们 作为一个物体。你会的。 这是违法的,这是不明确的行为,但在实践中它经常有效。 再一次,析构函数不会物理地蒸发内存。在析构函数执行之后,您的RAM仍然具有相同的容量。从概念上讲,一旦析构函数运行,对象就不再存在。但它所包含的数据仍在内存中。 |
|
|
2
5
|
|
|
3
5
将
不
调用B的析构函数,除非
|
|
|
4
3
关于维基百科的第一点:
或
|
|
|
5
2
1)C++中析构函数调用顺序是构造函数调用顺序的逆序。因此,首先派生类对象得到destroy,然后派生基类对象。 2) 没有。 |
|
|
6
2
应该
|
|
|
7
2
如果您自己显式调用~SomeClass(),则将调用析构函数。使对象(在本例中是对象的基类部分)处于已销毁状态。 由于析构函数不是虚拟的,派生类的析构函数将不会被调用,但是某些类的基类也将被销毁。 仅仅使用i成员来确定A是否真的被破坏,并不是一个好的测试。实际上,您不能测试它,因为使用对象会导致未定义的行为。它可能工作,也可能不工作(在您的情况下,它可能会打印“i=20j=10”,但我已经被销毁了)。 |
|
Fernando Chu · 一个变量有多个可能的类?[关闭] 1 年前 |
|
|
Amaterastis · 基类接受子类和内部子类的模板参数 1 年前 |
|
|
Rishab Negi · 这个关键字在抽象类中是如何工作的 1 年前 |
|
|
dEmigOd · 类层次结构中的运算符重载解析 1 年前 |
|
|
TableTopRug · 如何从Kotlin中的密封类继承? 1 年前 |
|
|
hasdrubal · 抽象基类函数指针python 2 年前 |
|
|
Josh · 通过反思访问孩子的财产 2 年前 |