我有一个' StripManager'负责更新已有的' Strip'类。因此,经理需要参考条带。现在我知道我可以通过一个指向' Strip' class到&#;; StripManager'的构造函数但是我想知道是否有任何方法可以使用引用而不是指针。我只是总是喜欢处理引用,因为你像实际的类实例一样使用它们而不是处理指针表示法等。
那可以这样做吗?
这里有一些伪代码......
class StripManager
{
public:
Strip &managedStrip;
StripManager(Strip &stripToManage);
}
StripManager::StripManager(Strip &stripToManage)
{
managedStrip = stripToManage;
}
答案 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;
不会编译,除非您编写自定义赋值运算符;即便如此,因为您无法分配引用,它不清楚语义应该是什么),根据你的具体情况,这可能是也可能不是问题。