我有一些上课的人,可以存储向量。我为此而得
class Data{
private:
std::vector<Point*> points;
public:
inline std::vector<Point*> getPoints(){
return points;
}
}
当我调用getPoints()时,它将返回临时对象吗?还是只会复制它?
还是我应该返回const reference呢?
更新
class Controller{
private:
Data *data;
public:
inline std::vector<Point*> getPoints(){
return data->getPoints();
}
}
如果我不希望它们都被复制,它们是否都应该是const引用?
您的方法会复制points
。对向量本身的修改不会传播到points
您的类内部。您可以返回一个const
引用来避免复制。呼叫者可以根据需要复制,但可以控制。
请注意,返回向量时创建的副本较浅。这意味着暴露了各个点:如果调用者对点进行了修改(而不是对向量进行修改),则这些修改将传播到类中向量所指向的点。
保护Point
s的内容要困难得多-它将需要您进行手动复制。它还需要您的呼叫者进行手动释放。不过,总的来说,最好使用智能指针(std::unique_ptr
或std::shared_ptr
)来简化资源管理。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句