我试图在类中保留对另一个对象的引用,所以我将指针用作成员。传递引用的最佳方法是什么,它们之间有什么区别。
class Sprite
{
public:
Sprite();
void SetTexture(Texture * const& texture);
void SetTexture(Texture & texture);
private:
Texture *m_texture;
};
void SetTexture(Texture * const&texture)或 无效SetTexture(纹理和纹理)吗?
我不想更改Sprite类中的纹理,这就是为什么我尝试使用const的原因。
答案 0 :(得分:0)
1)回答您的问题,如果要保留在调用者堆栈之外,则应使用指针。 IE,如果Sprite类是在调用函数或类中创建的,则可以(并且应该)使用引用。
2)如果要使用一个指针和一个const指针,则还应该将成员变量设置为const。
答案 1 :(得分:0)
当然不是void SetTexture(Texture* const&);
。
虽然有效,但通过引用常量传递小的琐碎类型(例如指针)是毫无意义的悲观。
void SetTexture(Texture&);
是有意义的。如果纹理是可选的,则void SetTexture(Texture*)
更合适。
当然,如果接收者从未修改过纹理,则应通过标记Texture
const
在签名以及成员中反映出来。