我有一个c ++类,其中一部分位于
之下class Node{
public:
vector<string> getNames() const;
private:
vector<string> names_;
};
vector<string> Node::getNames(){
return names_;
}
函数getNames()传递向量的副本。我如何修改我的类,以便我可以从我声明Node对象而不是传递副本的任何其他类中引用'const reference'向量?
答案 0 :(得分:6)
试试这个:
class Node
{
public:
const vector<string>& getNames() const;
private:
vector<string> names_;
};
const vector<string>& Node::getNames() const
{
return names_;
}
少数事情:
答案 1 :(得分:1)
将定义更改为
const vector<string>& getNames() const;
答案 2 :(得分:0)
反对返回对成员的引用的一些论据:
const
- ness并不能真正保护您免受使用const_cast
删除它的客户端的影响(逻辑访问冲突)
我会将其放在Premature Optimization部分。