📅  最后修改于: 2023-12-03 15:10:29.948000             🧑  作者: Mango
在C++中,可以使用参考成员(reference member)来在类中引用另外一个对象。通常,声明参考成员需要在类成员初始化列表(initializer list)中初始化,如下所示:
class MyClass {
public:
MyClass(int& num) : m_num(num) {}
private:
int& m_num;
};
但是,在某些情况下,我们可能不想在初始化列表中初始化参考成员,那么有没有其他的方法来声明参考成员呢?
答案是肯定的。我们可以使用std::reference_wrapper
来声明参考成员,而不需要在初始化列表中初始化。std::reference_wrapper
是一个模板类,用于将参考类型(reference type)封装为对象。示例如下:
#include <functional>
class MyClass {
public:
MyClass(int& num) : m_num(num) {}
private:
std::reference_wrapper<int> m_num;
};
在这个例子中,m_num
是一个std::reference_wrapper<int>
类型的对象,它可以通过get()
函数获取到其中存放的参考值。以下是使用std::reference_wrapper
声明参考成员的几个值得注意的地方:
<functional>
的引入。std::reference_wrapper
是一个模板类,需要指明它所引用的类型。使用std::reference_wrapper
可以方便地在类中引用其他对象,同时也避免了在初始化列表中初始化参考成员的繁琐操作。