1、没有引用的情况:
#include <iostream>
#include <queue>
using namespace std;
class Person
{
public:queue<int>que;
public:queue<int> getQueue(){return que;}void push(int a){que.push(a);}void pop(){que.pop();}
};int main() {Person p;for (size_t i = 0; i < 10; i++){p.push(i);}std::cout<<"弹出前元素个数:"<<p.getQueue().size()<<std::endl;p.getQueue().pop();p.getQueue().pop();p.getQueue().pop();std::cout<<"弹出后元素个数:"<<p.getQueue().size()<<std::endl;return 0;
}
实际上p.getQueue()返回的是一个副本,并不是返回成员变量
输出如下:
2、采用引用:
#include <iostream>
#include <queue>
using namespace std;
class Person
{
public:queue<int>que;
public:queue<int>& getQueue(){return que;}void push(int a){que.push(a);}void pop(){que.pop();}
};int main() {Person p;for (size_t i = 0; i < 10; i++){p.push(i);}std::cout<<"弹出前元素个数:"<<p.getQueue().size()<<std::endl;p.getQueue().pop();p.getQueue().pop();p.getQueue().pop();std::cout<<"弹出后元素个数:"<<p.getQueue().size()<<std::endl;return 0;
}
输出如下: