我有一个“ StripManager”类,负责更新已经存在的“ Strip”类的数据。因此,管理者需要参考试条。现在,我知道可以将指向“ Strip”类的指针传递给“ StripManager”类的构造函数,但是我想知道是否有使用引用而不是指针的方法。我只是一直喜欢处理引用,因为您像实际的类实例一样使用它们,而不必处理指针符号等。

这样可以做到吗?

这是一些伪代码...

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;不会编译;即使那样,由于您无法分配引用,因此不清楚语义应该是什么),取决于您的具体情况,可能是问题,也可能不是问题。

07-25 21:53