哪种内存更有效:静态函数,或者立即删除的对象的函数?

Sub*_*iro 1 c++ function

标题所说的问题是静态函数?或者立即删除的对象的功能?

我知道在实际情况下,差异是完全不可察觉的,但我仍然想知道哪种更有效地节省内存.我真的不介意"新"和"删除"命令给出的开销.

MyClass::staticFunction();
Run Code Online (Sandbox Code Playgroud)

要么...

myObject = new MyClass;
myObject->normalFunction();
delete myObject;
Run Code Online (Sandbox Code Playgroud)

编辑:第二个代码也可能是MyClass().normalFunction();愚蠢的......

这里有一些事情需要考虑;

  1. 只有一个myObject实例,它只在应用程序中使用ONCE.
  2. 使用后,它会立即删除,因为它不需要.
  3. 有人会问,为什么这甚至在课堂上呢?为什么不把函数放在临时变量使用的位置呢?答案是封装和可读性.我相信静态函数使用与全局函数相同的资源,因为事实上,它们实际上是享受类范围的全局函数.我必须把它放在它自己的类中的唯一原因是使我的代码更具可读性和封装性.

sbi*_*sbi 6

就目前而言,这一切都没有任何意义.真正的解决方案是提供一个自由函数(在命名空间范围内的函数),因为这就是自由函数的用途.

哦,既然你问过:如果调用这个单一函数在代码中有明显的开销,那么你只能通过仔细的分析找到它.分析也可以回答你的问题,哪种方式更快.
但首先要确保您的代码易于阅读且易于维护.然后优化这将比修复过早的微"优化"代码容易得多.您应该采用的唯一早期优化是那些能够产生最佳数据结构和算法的优化.

(注意,new并且delete很可能会比函数实际执行的开销大得多,更不用说调用它了.)