我有 2 个与同一问题相关的问题:
如何返回对属于某个类的向量的引用?
我有这堂课:
class sys{ protected: vector<int> s; public: sys(); vector<int>& getS() {return s;} //(1) };
(1) 应该返回向量的引用
s
。但是,在main()
:main(){ sys* my_sys = new sys(); vector<int> &t1 = my_sys->getS(); //(2) vector<int> t2 = my_sys->getS(); //(3) ... }
t1
是一个参考s
(即当t1
改变时也my_sys.s
改变了)。t2
是 COPYs
(即t2
my_sys.s 何时更改时未更改)。
为什么第 (3) 行有效?
我不希望
my_sys.s
在课堂之外进行更改,但出于效率考虑,我想返回参考。我在哪里放const
?我试图将第 (1) 行更改为
const vector<int>& getS() {return s;} //(4)
但我不确定这是否足够。