我正在为 Nintendo DS(具有 4MB 内存)使用 C++ 编写代码。我有一个按钮类,用于存储 x、y 位置和长度等数据。以下哪一项会占用更少的内存?
.
方法一,类变量length、x、y、halfPoint
Button::Button(int setX, int setY, int setLength)
{
x = setX;
y = setY;
length = setLength;
halfPoint = length/2;
}
//access variable with buttonName.halfPoint
方法二,类变量length,x和y
Button::Button(int setX, int setY, int length)
{
x = setX;
y = setY;
length = setLength;
}
int Button::getHalfPoint()
{
return length/2;
}
//access variable with buttonName.getHalfPoint()
感谢任何帮助。 (并且在实际代码中我计算了一个比半点复杂得多的位置)
最佳答案
如果有很多Button
,getHalfPoint()
方法会占用较少的空间。为什么?因为成员函数实际上只是由编译器作为常规函数实现的,带有指向对象的指针的隐含第一个参数。所以你的函数被编译器重写为:
int getHalfPoint(Button* this)
{
return this->length/2;
}
(由于名称修改,这有点复杂,但这足以解释。)
但是,您应该仔细考虑必须完成的额外计算量,以避免存储额外的 4 个字节。正如 Cameron 提到的,编译器可能会为对象添加额外的空间,具体取决于架构(我认为这很可能发生在 RISC 架构上)。
关于c++ - 什么在 C++ 中使用更多内存?一个 2 个整数或 2 个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24498642/