我想知道当存在非静态成员函数时是否有任何优势使用静态成员函数。它会导致更快的执行(因为不必关心所有的成员变量),或者更少的内存使用(因为没有被包含在所有实例中)?使用静态成员函数而不是等效的非静态成员函数的优点?
基本上,我正在看的函数是一个效用函数,用于将表示像素颜色的整数数组围绕任意中心点旋转任意数量。它被放置在我的抽象Bullet基类中,因为只有子弹才会使用它,而且我不想在某些实用程序类中调用它的开销。它有点太长,并且在每个派生的子弹类中都会使用,所以内联可能不是个好主意。你会如何建议我定义这个功能?作为Bullet的静态成员函数,Bullet的非静态成员函数,或者不是Bullet的成员,而是在Bullet.h中类的外部定义的成员?每个的优点和缺点是什么?
是的,我不太确定C++是如何工作的。我来自Flash背景,ActionScript在最奇怪的地方有可怕的开销 - 实用程序类中的静态函数在运行时解析,所以每次使用Math.sin时,都必须通过哈希表找到Math类,然后找到sin函数。很高兴听到C++至少有更多的常识.. – jonathanasdf 2010-05-01 05:24:17
@Zan:静态成员函数没有'this'指针。 – 2010-05-01 05:37:33
确实,你是对的。我读到我回应的这句话:“成员函数和免费函数之间绝对没有性能差异”。这实际上并不是它所说的。我的错。 – 2010-05-02 01:53:24