c++ - 即使我没有使用引用,值(value)也会改变

标签 c++ reference

在代码中:

struct Rep
    {
        const char* my_data_;
        Rep* my_left_;
        Rep* my_right_;
        Rep(const char*);
    };

typedef Rep& list;

ostream& operator<<(ostream& out, const list& a_list)
    {
        int count = 0;
        list tmp = a_list;//----->HERE I'M CREATING A LOCAL COPY
        for (;tmp.my_right_;tmp = *tmp.my_right_)
        {
            out << "Object no: " << ++count << " has name: " << tmp.my_data_;
            //tmp = *tmp.my_right_;
        }
        return out;//------>HERE a_list is changed
    }

我曾想过,如果我要创建 a_list 对象的本地拷贝,我将对完全独立的对象进行操作。为什么不是这样?

谢谢。

最佳答案

您已经typedeflist 成为Rep &。这意味着 tmp 不是拷贝。这只是另一个引用。您对 tmp 所做的任何操作都会对 a_list 进行。

关于c++ - 即使我没有使用引用,值(value)也会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2578994/

相关文章:

c++ - boost::thread sleep() 有什么作用?

C++ 指向类对象的指针

c++ - 关于引用和指针的问题

C++ 重载运算符不修改原始对象(通过引用传递)

c++ - 结构指针函数指向其他结构的其他函数

c++ - 什么是 __alldiv?

c++ - 在 Visual Studio 2013 中运行程序时出错

perl - 如何遍历Perl数组引用?

javascript - React - 更新状态数组时对象中的唯一键被覆盖

angular - 如何在 VSCode 的 TypeScript 文件中显示来自 HTML 文件( Angular 模板)的引用?