通过c ++中的类引用访问变量

时间:2009-06-02 00:09:14

标签: c++

我有一个c ++类,其中一部分位于

之下
class Node{
    public:
       vector<string> getNames() const;
    private:
        vector<string> names_;
};
vector<string> Node::getNames(){
    return names_;
}

函数getNames()传递向量的副本。我如何修改我的类,以便我可以从我声明Node对象而不是传递副本的任何其他类中引用'const reference'向量?

3 个答案:

答案 0 :(得分:6)

试试这个:

class Node
{
    public:
       const vector<string>& getNames() const;

    private:
        vector<string> names_;
};

const vector<string>& Node::getNames() const
{
    return names_;
}

少数事情:

  1. getNames()现在是一个const方法,因为Node不会在逻辑上发生变化。
  2. 作为常量参考返回,因此您不需要复制。

答案 1 :(得分:1)

将定义更改为

const vector<string>& getNames() const;

答案 2 :(得分:0)

反对返回对成员的引用的一些论据:

  • 您的类的客户端可能持有该引用的时间比您的实例存在的时间长(内存损坏)
  • 方法和返回的引用const - ness并不能真正保护您免受使用const_cast删除它的客户端的影响(逻辑访问冲突)
  • 在线程环境中遇到危险(竞争条件。)

我会将其放在Premature Optimization部分。