链接 return-by-by-reference 调用以访问基础数据
Chaining return-by-reference calls to access underlying data
我以前只使用指针工作,我不知道引用在 return 语句中的行为是否相同。
我可以链接多个 return-by-reference 方法来访问数据而不用担心包含垃圾的“悬挂”引用吗?或者在将引用传递给上面的函数调用之前引用是否会超出范围?
如果这是传递引用的有效方式,请参阅下面的代码(我们假设索引都在范围内)
struct Data {
//Non-Trivial Data
}
class Container {
public:
Data& get(int index) { return m_Collection[index]; }
private:
Data[100] m_Collection;
}
class ContainerCollection {
public:
Data& get(int containerindex, int dataindex) { return m_Container[containerindex].get(dataindex); }
private:
Container[3] m_Container;
}
是的,这是链接引用的有效方式。
您可以在函数内链接引用,而不必担心悬挂引用(您应该担心指针)。只要m_Container
存在,引用就可用,之后指向NULL
.
我以前只使用指针工作,我不知道引用在 return 语句中的行为是否相同。 我可以链接多个 return-by-reference 方法来访问数据而不用担心包含垃圾的“悬挂”引用吗?或者在将引用传递给上面的函数调用之前引用是否会超出范围?
如果这是传递引用的有效方式,请参阅下面的代码(我们假设索引都在范围内)
struct Data {
//Non-Trivial Data
}
class Container {
public:
Data& get(int index) { return m_Collection[index]; }
private:
Data[100] m_Collection;
}
class ContainerCollection {
public:
Data& get(int containerindex, int dataindex) { return m_Container[containerindex].get(dataindex); }
private:
Container[3] m_Container;
}
是的,这是链接引用的有效方式。
您可以在函数内链接引用,而不必担心悬挂引用(您应该担心指针)。只要m_Container
存在,引用就可用,之后指向NULL
.