每次创建新实例时,类是否必须为其非静态成员函数分配内存?
为了更好地说明这一点,如果我正在编写一个表示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/