何时在游戏开发中使用C++指针

jme*_*fin 4 c++ pointers

我看了很多文章,大多数人讲的是同一个故事:除非必须,否则不要使用指针.来自C#/ Java背景,其中内存全部被管理,我完全不知道什么时候使用指针是合适的,除了这些情况:

  • 动态内存(如可变大小的数组)
  • 多态性

什么时候我会使用指针,特别是在gamedev的上下文中?

Meh*_*dad 6

"不要使用指针,它们很慢" 没有意义(至少在C++ 中没有意义).

这就像是说"不要使用变量,它们很慢".

  • 你是说,"不要使用动态内存分配 "?
    如果是这样的话:我认为你现在不应该担心.首先编写代码,然后再进行优化.

  • 或者你的意思是说,"不要使用原始指针(即类型foo*)",这将需要newdelete
    如果是这样,这是一个很好的建议:你通常需要智能指针,比如shared_ptr或者unique_ptr来管理对象,而不是处理原始指针.你不应该需要使用new,并delete在大多数C++代码,尽管这看起来自然.
    但它们仍然是引擎盖下的指针!

  • 或者你的意思是其他什么?

附录

感谢下面的@ bames53指出这一点:

如果传递一个副本的选项(即当你传递数据量,而不是一个巨大的结构或数组可能比一些寄存器较大,例如顺序〜16个字节的),也不能使用指针(或参考)传递数据; 而是通过副本传递.它允许编译器以这种方式更好地进行优化.

  • 我想我现在明白了.我应该只在必要时使用指针,我应该使用"智能指针". (2认同)