c++ - 返回对类数据成员的引用,然后尝试更改该成员

标签 c++ reference

我看过其他关于此的帖子,但还没有真正了解会发生什么。

假设我有这段代码:

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/

相关文章:

c++ - 如何调整 FindBoost.cmake 静态库搜索 x32 boost 库?

c++ - 自动将进入/退出功能日志添加到项目中

c++ - 指向引用 : changing the orignal value 的指针

Java : Assume object reference or make copy

c++ - 如何将 std::unordered_multimap<uint, T> 转储到 std::vector<T>?

c++ - googletest - 找出意外调用的位置

c++ - 将托管 C++ 从 vs2003 移植到 vs2008 的问题

c# - 为什么 32 位 .NET 进程的引用类型的最小大小为 12 字节

c# - 从类编辑 MainWindow 上的 ListBox

c++ - 通过函数初始化变量