将引用作为参数传递给类的正确方法

时间:2019-04-11 23:13:04

标签: c++ class object pointers reference

我试图在类中保留对另一个对象的引用,所以我将指针用作成员。传递引用的最佳方法是什么,它们之间有什么区别。

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的原因。

2 个答案:

答案 0 :(得分:0)

1)回答您的问题,如果要保留在调用者堆栈之外,则应使用指针。 IE,如果Sprite类是在调用函数或类中创建的,则可以(并且应该)使用引用。

2)如果要使用一个指针和一个const指针,则还应该将成员变量设置为const。

答案 1 :(得分:0)

当然不是void SetTexture(Texture* const&);
虽然有效,但通过引用常量传递小的琐碎类型(例如指针)是毫无意义的悲观。

如果必须有纹理,那么

void SetTexture(Texture&);是有意义的。如果纹理是可选的,则void SetTexture(Texture*)更合适。

当然,如果接收者从未修改过纹理,则应通过标记Texture const在签名以及成员中反映出来。