每次创建新实例时,类是否必须为其非静态成员函数分配内存?

为了更好地说明这一点,如果我正在编写一个表示3空间向量的类v3d,那么我会通过定义以下内容来使用更少的内存吗?

static v3d::dotProduct(v3d v1, v3d v2)

相对于

v3d::dotProduct(v3d v2)吗?

最佳答案

每个实例均不存储静态成员函数和非静态成员函数。就非静态成员函数而言,据我所知,它们是被翻译成类似的东西(可能比这更易读):

v3d_dotProduct(v3d this, v3d v2)


并相应地翻译给他们的电话。如果您想提高性能,我建议您使用内联函数,因为这些本质上会将函数内容复制到您所调用的位置。我不认为这会减少您的内存使用量,但是值得每秒调用多次的类函数(静态和非静态)使用。

http://www.cplusplus.com/forum/articles/20600/

10-06 14:52