Мне было интересно, есть ли какие-либо преимущества в использовании статической функции-члена, когда есть нестатический эквивалент. Это приведет к более быстрому выполнению (из-за необходимости не заботиться обо всех переменных-членах) или, возможно, меньше использовать память (из-за того, что она не включена во все экземпляры)?Преимущество использования статической функции-члена вместо эквивалентной нестатической функции-члена?
В принципе, функция, которую я ищу, представляет собой функцию полезности для поворота целочисленного массива, представляющего пиксельные цвета, произвольным числом градусов вокруг произвольной центральной точки. Он помещается в мой абстрактный базовый класс Bullet, так как его используют только пули, и мне не нужны накладные расходы, вызвавшие его в каком-то классе. Он слишком длинный и используется в каждом производном классе bullet, поэтому, вероятно, это не очень хорошая идея для встроенного. Как бы вы предложили мне определить эту функцию? Как статическая функция-член Bullet, нестатической функции-члена Bullet или, может быть, не как член Bullet, а определенная вне класса в Bullet.h? Каковы преимущества и недостатки каждого?
Да, я не уверен, как работает C++. Я исхожу из флэш-фона, и ActionScript имеет ужасные накладные расходы в самых странных местах - статические функции в классах утилиты разрешаются во время выполнения, так что, как и Math.sin каждый раз, когда он используется, игрок должен найти класс Math через хэш-таблицу, а затем найти функция sin.Рад слышать, что C++ по крайней мере имеет более распространенный смысл. – jonathanasdf
@Zan: статические функции-члены не имеют указателя 'this'. –
Действительно, вы правы. Я прочитал строку, на которую я отвечал как «Нет абсолютно никакой разницы в производительности между функциями-членами и свободными функциями». на самом деле это не так. Виноват. –