【发布时间】:2018-01-29 17:24:18
【问题描述】:
我有点不确定如何使用来自std::queue 库的front() 函数返回的值。在网站 cplusplus.com 上,它说该函数返回一个 reference。
但是,当我查看实际用法时,似乎该函数直接用于获取值。
例如,通过以下步骤
std::queue<int> myqueue;
myqueue.push(30);
返回值应按如下方式存储:
int &some_number = myqueue.front();
那么这怎么可能:
std::cout << "myqueue.front() returns " << myqueue.front()
//myqueue.front() returns 30
如果它返回 reference 值,这是否意味着它返回 位置 存储值的位置,而不是 不是值本身强>?那么打印位置怎么会打印出值而不是整数的地址。
另外,按照这个逻辑,是不是意味着这些也有效?
场景 1
std::queue<int> myqueue;
myqueue.push(30);
int new_number = myqueue.front();
new_number 的值为 30
场景 2 -(someStruct 是已定义的结构)
std::queue<someStruct*> myqueue;
myqueue.push(someStruct* abcPtr); \\abcPtr has been initialized
someStruct* edfPtr= myqueue.front();
edfPtr 将指向同一位置 abcPtr 也指向。
如果是这样,那么传递std::queue::front 返回的值作为参考有什么意义。有谁知道使用背后的逻辑?
【问题讨论】:
-
不要将引用视为指针,将其视为别名或同义词。看到这个:stackoverflow.com/q/620604/10077
-
我明白了。那么这是否意味着这样做
&some_int =...不会改变some_int指向的位置,而只会改变它的值?
标签: c++ pointers reference queue return-type