C++通过引用传递给类中的指针

Jea*_*ley 3 c++

所以,我有一个类存储指向对象的指针.我有一个方法,可以向对象添加对象.添加时,我知道我可以通过引用或指针传递,并阅读了每个的优点和缺点,但在这种情况下,我无法弄清楚哪一个更好,为什么.对于我可以弄清楚的一切,他们几乎是一样的(但我可能错了!)

这是(一个释义)传递指针/地址:

hpp:
class Room {
    vector<Item*> items;
public:
    void addItem(Item*);
};

cpp:
void Room :: addItem(Item* item) {
    items.push_back(item);
}
Run Code Online (Sandbox Code Playgroud)

......并通过引用传递:

hpp:
class Room {
    vector<Item*> items;
public:
    void addItem(Item &);
};

cpp:
void Room :: addItem(Item &item) {
    items.push_back(&item);
}
Run Code Online (Sandbox Code Playgroud)

我应该使用哪个?

Use*_*ess 5

这丝毫无关紧要,所以在呼叫站点看起来更自然,或者与代码的其余部分更加一致.

好的,我可以看到各自支持的观点,但我不能告诉你它们是否在你的情况下重要.

  • 通过指针传递更准确地反映了你如何使用参数(尽管我无法分辨这是否是有用的语义信息或实现细节)
    • 传递指针(或new直接结果)的调用站点看起来很自然
    • 一个调用网站做一些愚蠢的事情,如传递一个自动变量的地址将脱颖而出
  • 通过引用传递表明该论点不应该是NULL,这可能是也可能不正确和有用