拥有ref类型的类成员的目的是什么?
What is the purpose of having a class member that is a ref type?
我有这个代码,但它不是一个实际的例子。
。
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
指针基本相同。如果你需要一个指向其他对象的非空指针,而这个指针只会在构造过程中被赋值,你可以选择使用引用来代替。
相关文章:
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 重载运算符的范围是什么?它是否会影响作为类成员的集合的插入函数?
- Visual C++: MSVC vs. GCC+CLANG: 处理 lambda 捕获类成员变量,正确的方法是什么?
- 指针类型类成员的动态强制转换的恒定性是什么?
- 删除类成员的动态分配内存的最佳方法是什么
- 初始化类成员的更好做法是什么?
- 键入擦除成员函数指针的"right"方法是什么?
- 使用只有一个成员的工会的目的是什么?
- 什么是指向成员模板参数的指针
- C++:允许临时对象调用非常量成员函数的设计理念是什么?
- 命名空间 Win 没有成员"simpleControl"是什么意思
- 在多个对象中初始化预定义成员变量的正确方法是什么?
- 在不编写显式 setter 的情况下修改私有类数据成员的便捷方法是什么?模板有用吗?
- 这个星号 (*) 符号在 C++ 中是什么意思?-- 指向成员的指针
- 在单一实例类中将成员指针设置为 null 的正确方法是什么
- 返回没有 typedef 的成员函数指针的语法是什么?
- 使用静态类成员而不是私有字段之间的速度差异是什么?
- 使用泛型成员变量"placement new"结构/类数组的正确方法是什么?
- 从C++与 C 灵活阵列成员互操作的正确方法是什么?
- 删除数组成员的更好方法是什么?