在C ++中,您是否可以将类成员作为传入引用?

时间:2014-08-15 06:16:55

标签: c++ reference

我有一个' StripManager'负责更新已有的' Strip'类。因此,经理需要参考条带。现在我知道我可以通过一个指向' Strip' class到&#;; StripManager'的构造函数但是我想知道是否有任何方法可以使用引用而不是指针。我只是总是喜欢处理引用,因为你像实际的类实例一样使用它们而不是处理指针表示法等。

那可以这样做吗?

这里有一些伪代码......

class StripManager
{
  public: 
    Strip &managedStrip;
    StripManager(Strip &stripToManage);
}

StripManager::StripManager(Strip &stripToManage)
{
    managedStrip = stripToManage;
}

2 个答案:

答案 0 :(得分:4)

参考只能 已初始化 ,但 已分配 。所以你不能重新分配引用本身。您可以在member initialization list中执行此操作以初始化参考成员。

class StripManager
{
  public: 
    Strip &managedStrip;
    StripManager(Strip &stripToManage);
};

StripManager::StripManager(Strip &stripToManage): managedStrip(stripToManage)
{}

答案 1 :(得分:1)

您可以初始化引用,但不能分配引用,因此您需要使用成员初始化列表。不管怎样,使用它而不是在构造函数中赋值是一个好习惯,因为它可以更有效。

StripManager::StripManager(Strip &stripToManage) : managedStrip (stripToManage)
{
}

请注意,拥有引用成员会使StripManager不可分配(StripManager a(strip1), b(strip2); a = b;不会编译,除非您编写自定义赋值运算符;即便如此,因为您无法分配引用,它不清楚语义应该是什么),根据你的具体情况,这可能是也可能不是问题。