请看下面的代码:
class A {
public x = 5;
public y = 6;
public z = 7;
}
class B extends A {
public m = 1;
public n = 2;
}
$a = new A();
$b = new B()
从上面的代码可以看出,$a 正在分配 x 内存量,而 $b 正在分配 y内存量;
现在我的问题是下面哪一个是正确的?
x > y
x < y
最佳答案
这些是我的数字:
Starting allocation 62480
Allocated memory for new A() 328
Allocated memory for new B() 496
因此 x < y
这两个类定义是等价的
class B extends A {
public $m = 1;
public $n = 2;
}
class C {
public $x = 5;
public $y = 6;
public $z = 7;
public $m = 1;
public $n = 2;
}
这意味着如果您将 B 的定义更改为 C 的定义,那么内存使用将与使用 new B() 或 new C() 完全相同。
要自己运行它,请使用此代码(作为示例)
$start = memory_get_usage();
echo "Starting allocation $start\n";
$a = new A();
$diff = memory_get_usage() - $start;
echo "Allocated memory for new A() $diff\n";
$b = new B();
$diff = memory_get_usage() - $start - $diff;
echo "Allocated memory for new B() $diff\n";
关于PHP [面向对象] : Memory allocation for Inheritance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1899629/