c++ - 在决定游戏中对象的生命时,何时使用指针、引用、原始指针和智能指针?

标签 c++ pointers reference smart-pointers raw-pointer

我目前正在尝试了解何时使用实际对象、原始指针和智能指针。在下面的示例中,哪个最好使用或每个步骤?可以说我创建并加载了一个图像文件,我想为许多对象重用它,但我不想在每次创建对象时使用图像加载库从路径加载它。因此加载单个图像并且多个对象可以引用它。在程序结束之前,图像也应该在没有任何引用的情况下可用。对象本身要么永远存在,要么如果它的粒子对象在其生命为 0 后被删除,而不同时删除图像。谢谢。

最佳答案

Bjarne Stroustrup 建议仅将智能指针用作最后的手段。他的建议(从最好到最差)是:

  • 按值存储对象。
  • 按值将许多对象存储在容器中。
  • 如果没有别的办法,使用智能指针。

普通指针仅用于引用不属于自己的对象(所有者销毁该对象)。这同样适用于引用,尽管对 const 和 r 值引用的引用可以延长临时对象的生命周期。

参见 Bjarne Stroustrup - The Essence of C++: With Examples in C++84, C++98, C++11, and C++14在 0:37:40。

关于c++ - 在决定游戏中对象的生命时,何时使用指针、引用、原始指针和智能指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53721877/

相关文章:

reference - Cython 初始化对象引用

c++ - operator[] 根据变量类型返回引用或拷贝

c++ - vector 作为类成员

c++ - while 循环条件变量

c++ - Windows 与 Linux GCC argv[0] 值

c - 段错误 : 11 when returning stuct via function pointer in struct

c - 如何重新分配结构指针

c++ - 如何传递对象数组?

c - 结构初始化不适用于 malloc

arrays - Perl 中空列表引用的数组上下文赋值——请解释行 "my @arr = [ ]; "