1
1
对于类的每个对象实例,非静态属性(别名字段、别名成员变量)都有自己的副本。 方法(无论是否为静态)只存在于每个类的一个副本中。 如果你仔细想想,这是有道理的:没有理由复制一个不变的行为。只有状态(变量)才会改变。 我能想到的静态和非静态方法之间的唯一区别是可见性级别,即非静态方法“看到”对象状态,而静态方法不能,因为它在类级别上工作。 编辑(证明):
我已经创建了10000个aclass对象,并测量了可执行文件占用6304kbyte,而创建10000个aclasstatic对象需要6284kb。这是不同的,但无关紧要。 |
2
0
这些方法不会像您所说的那样被“复制”,类只是有一个对它们的引用。object1a+object1b可能需要最少的内存来存储这些引用,但在大多数情况下这是可以忽略的。 不要将成员函数设为静态以保存内存。如果你这样做了,你就会做错事。 |
Community wiki · 如何调试Python内存故障? 1 年前 |
tuskiomi · 如何为参考提供明确的锈蚀寿命? 2 年前 |
cobb208 · Malloc正在为释放指针引发错误 2 年前 |
mo FEAR · C++ STL映射是否在创建后移动了一个值的位置? 2 年前 |
Pooyanoss · 覆盖类的堆栈分配实例 2 年前 |
TheKing · 为什么数组的地址可以有负值? 2 年前 |
Http2inc · 如何从内存中解析这些二进制数据? 2 年前 |
tifrel · 如何检查已编译类型的表示形式? 2 年前 |
Gabriele · 释放GSL矩阵的正确方法是什么? 6 年前 |
Makogan · 3D纹理大小影响程序输出,不会引发错误 6 年前 |