c++ - 将指针类参数复制到类成员的好处?

标签 c++ pointers directx directx-9 member-pointers

我有一个播放器类,它使用我的 DirectX 图形类来创建表面和绘制 Sprite 。

我将图形类作为指针传递给播放器类方法,如下所示:

**game.cpp**
m_pPlayer->Init(Graphics* graphics);

在播放器类中,我的 Init 方法将指针传递给另一个指针方法。在播放器类中创建另一个图形指针并改为复制指针参数有什么好处吗?

所以这样:

**player.cpp**
m_pSurface->Init(graphics, m_width, m_height);

对比这个:

**player.cpp**
m_pGraphics = graphics;
m_pSurface->Init(m_pGraphics, m_width, m_height);

我知道有一个 m_pGraphics 指针允许我在同一个类中再次重用该指针,例如我的绘图方法,但我还是在播放器类中调用了该方法,所以我不能只是一遍又一遍地传递指针又是?

最佳答案

这只是样式问题,不太可能对性能产生任何影响。复制指针非常便宜,我会把它留给编译器来优化。

如果 player 大量使用 Graphics 对象,将指针存储在成员变量中而不是一直传递它是合理的。它可能会使 player 上的成员函数签名更短,这很好。

您确实需要确保指向 Graphics 对象的成员指针在使用时保持有效。它仍然是正确的 Graphics 对象并且它还活着吗?如果你每次都传递指针,你可能不会有这种并发症。

关于c++ - 将指针类参数复制到类成员的好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26841152/

相关文章:

c# - 如何编码指向包含无符号字符数组的结构数组的指针?

c - 我有一个包含成员变量名称的字符串。我想用它来访问成员本身

windows - Windows 服务的 DirectX 访问

performance - 为什么 Direct3D 应用程序在全屏模式下表现更好?

C# 简单的 directX 控件

c++ - 如何解码 windows 64 位十六进制值 : little endian time?

c++ - make_heap 和排序 x 和 y 坐标

c++ - WA_DeleteOnClose 删除所有成员?

c++ - 指针:初始化与声明

c++ - C++ 中的二维数组 -