Pol*_*878 1 c++ stl pass-by-reference
所以我正在查看一些代码,我看到了这个:
class whatever
{
public:
void SomeFunc(SomeClass& outVal)
{
outVal = m_q.front();
m_q.pop();
}
private:
std::queue<SomeClass> m_q;
};
Run Code Online (Sandbox Code Playgroud)
这似乎不再是outVal将是一个有效的参考...但是,它似乎工作.
我之前也在其他代码中看过这个,这个有效吗?谢谢
请记住,引用不像指针:它们在创建后不能反弹.这意味着,如果我这样做
int a;
int b;
int &c = a;
Run Code Online (Sandbox Code Playgroud)
然后在整个范围内,对c的赋值实际上意味着对a的赋值.所以,
int a = 2;
{
int b = 3;
int &c = a;
c = b;
b = -5;
}
printf("%d",a); // prints "3".
Run Code Online (Sandbox Code Playgroud)
因此,在这种情况下,引用不是指向已删除的对象.相反,返回值m_q.front()被复制到通过赋值运算符任何outVal引用.
| 归档时间: |
|
| 查看次数: |
149 次 |
| 最近记录: |