【发布时间】:2015-09-24 10:27:57
【问题描述】:
这个问题只是为了澄清概念,所以请不要强调“为什么有人会写这样一个类”
我已经知道如何在不创建对象实例的情况下访问静态函数(意味着不修改对象的状态)。但是让我们考虑一下两个类中只有两个函数的情况:
class A {
/* no class attributes */
/* no constructor */
public function someFunction(){
}
public static function someStaticFunction(){
}
}
class B {
/* no class attributes */
/* no constructor */
public function some_function(){
}
public function someNonStaticFunction(){
/* with same implementation as of A::someStaticFunction() */
}
}
对于A类:没有构造函数和属性,所有函数都是公共的。所以,
- 将函数声明为此类的静态函数有什么目的吗?
- 如果我使用 B 类而不是使用 A 类,那么我可以在创建此类的实例后调用该函数。调用这样的函数需要多少费用?在执行时间和内存方面(不考虑构造函数和属性)
- 创建类的实例会为对象分配内存,但如果对象完全没有属性,它会消耗内存吗?
- 在函数完全执行后,以静态方式调用函数会自动清空内存吗?或者函数本身不消耗内存(唯一的成本是内部变量的计算和内存)?
【问题讨论】:
标签: class oop static execution-time