gpt4 book ai didi

c++ - 在 getter 函数中返回 const 引用或拷贝?

转载 作者:IT老高 更新时间:2023-10-28 12:29:15 34 4
gpt4 key购买 nike

默认情况下,从 getter 函数返回拷贝 (1) 或引用 (2) 更好?

class foo {
public:
std::string str () { // (1)
return str_;
}

const std::string& str () { // (2)
return str_;
}

private:
std::string str_;
};

我知道 2) 可能会更快,但由于 (N)RVO 而不必如此。 1) 对于悬空引用更安全,但对象可能会过期或永远不会存储引用。

当您编写类(class)但(尚)不知道性能和生命周期问题是否重要时,您的默认设置是什么?

附加问题:当成员不是纯字符串而是 vector 时,游戏是否会改变?

最佳答案

这真的取决于你对 默认行为 的期望。

您是否希望调用者看到对他们的 str_unbeknownst(真是一个词!)所做的更改?然后你需要传回一个引用。如果您可以拥有一个 refcounted 数据成员并将其返回,那可能会很好。

如果您希望调用者得到一份拷贝,请执行 1)。

关于c++ - 在 getter 函数中返回 const 引用或拷贝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2182408/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com