我看过其他关于此的帖子,但还没有真正了解会发生什么。
假设我有这段代码:
template<typename T>struct S {
S(T value):val{value}{}
T& get(){return val;}
private:
T val;
};
int main(){
S<int>s1{5};
int n = s1.get();
n = 10;
std::cout<<s1.get();
}
这会打印出:5
我的问题是,如果我返回对 val 的引用,为什么没有值 当我改变 n 的值时 val 的变化?
最佳答案
当您将结果存储在 int n
中时,您会创建一个拷贝。尝试:
int &n = s1.get();
关于c++ - 返回对类数据成员的引用,然后尝试更改该成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56117617/