在c++中,可以将类成员作为传入的引用吗?
In C++, can you have a class member be a passed-in reference?
我有一个'StripManager'类,负责更新已经存在的'Strip'类的数据。因此,经理需要一个条带的参考。现在我知道我可以传递一个指针到'Strip'类到'StripManager'类的构造函数,但我想知道是否有任何方法使用引用而不是指针。我只是一直更喜欢处理引用,因为你像使用实际的类实例一样使用它们,而不是必须处理指针表示法等。
那么这是可以做到的吗?
下面是一些伪代码…
class StripManager
{
public:
Strip &managedStrip;
StripManager(Strip &stripToManage);
}
StripManager::StripManager(Strip &stripToManage)
{
managedStrip = stripToManage;
}
引用只能初始化,不能赋值。所以你不能重新赋值引用本身。可以在成员初始化列表中初始化引用成员。
class StripManager
{
public:
Strip &managedStrip;
StripManager(Strip &stripToManage);
};
StripManager::StripManager(Strip &stripToManage): managedStrip(stripToManage)
{}
可以初始化引用,但不能对其赋值,因此需要为此使用成员初始化列表。在构造函数中使用它而不是赋值是一个好习惯,因为它可以更有效。
StripManager::StripManager(Strip &stripToManage) : managedStrip (stripToManage)
{
}
注意,有一个引用成员使得StripManager
不可赋值(StripManager a(strip1), b(strip2); a = b;
不会编译,除非你写一个自定义的赋值操作符;即使这样,由于您不能分配引用,因此语义应该是什么是不清楚的),这可能是一个问题,也可能不是,这取决于您的特定情况。
相关文章:
- 具有引用成员的结构是否具有唯一的对象表示形式
- 初始化右值引用成员
- C++通过绑定到引用成员而缩短临时变量寿命?
- C++为具有引用成员变量的类创建复制构造函数
- 常量和引用成员函数限定符
- C++将引用成员绑定到构造函数参数
- 如果包含引用成员的类中缺少原始变量,为什么它仍然可以访问?
- 初始化指针或引用成员变量以指向另一个成员
- 将常量引用成员设置为临时变量是否安全
- 对象超出范围后,引用成员设置为 0
- 复制构造函数初始化初始化列表中的引用成员会导致指针悬空
- 使用默认构造函数引用成员变量初始化错误
- 如何从派生类访问引用成员变量?
- Visual Studio 2017 允许在构造函数中使用自身初始化引用成员.真的是合法的C++吗?
- 为什么当类具有引用成员时C++编译器不删除复制构造函数
- 引用成员到构造函数参数按值传递
- 在执行不平凡的构造函数之前引用成员
- 具有引用成员变量的多态性
- 从按值构造函数参数初始化的引用成员
- 深度复制包含引用成员(C++)的结构