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

What is the purpose of having a class member that is a ref type?

本文关键字:是什么 成员 ref 类型 拥有      更新时间:2023-10-16

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

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

谁能提供一个现实生活中的例子,ref需要作为一个类成员,以便我能更好地理解它?

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

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

当然:模板类std::reference_wrapper<T>的全部目的就是保存一个引用!

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

当你想包装输出流时,保存对某物的引用可能也很有用;您将原始流作为引用并向其添加内容(例如,可以通过向包装器对象添加对底层流的引用来改进我的答案)。

const指针基本相同。如果你需要一个指向其他对象的非空指针,而这个指针只会在构造过程中被赋值,你可以选择使用引用来代替。