拥有一个ref类型的类成员的目的是什么?

时间:2011-12-17 03:42:13

标签: c++

我有这段代码,但这不是一个实际的例子。

实施例

class Animal
{
   int i;
   int& ref;
   public:
   Animal() : ref(i)
   {
   }
};

任何人都可以提供一个真实的例子,其中ref需要作为一个类成员,以便我能更好地理解它吗?

3 个答案:

答案 0 :(得分:3)

任何时候某个类A的多个对象都需要引用相同或其他类的单个共享实例;例如,几个People都可以拥有相同的母亲和/或父亲:

class Person {
    private:
      Person &mother_;
      Person &father_;

    public:
      Person(Person &mother, Person &father) : mother_(mother), father_(father) {}
      // ...
}

答案 1 :(得分:1)

当然:模板类std::reference_wrapper<T>的全部目的是保留一个参考!

这有很多用途。例如,您可以将它传递给std::thread构造函数(它总是复制)。您还可以创建引用包装器的容器。

当您想要包装输出流时,保持对某些内容的引用可能也很有用;您将原始流作为引用并向其添加内容(例如,可以通过向包装器对象添加对基础流的引用来改进this answer of mine)。

答案 2 :(得分:1)

它基本上与const指针相同。如果您需要一个指向其他对象的非空指针,并且该指针仅在构造期间分配,您可以选择使用引用。