struct tagItem { int a; int b; } //假如在A类中定义成员: vector<tagItem> m_vecItem; vector<tagItem> A::f() { return m_vecItem;//tagItem需要定义拷贝构造函数,否则m_vecItem即使在别处push_back了,每一个元素的a,b成员不会拷贝过去而保持初值(0之类的值) } vector<tagItem>& A::f() { return m_vecItem; }
因为stl容器都是基于拷贝,故不仅是vector,其它容器返回引用或对象都有此差异。