在代码中:
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 对象的本地拷贝,我将对完全独立的对象进行操作。为什么不是这样?
谢谢。
最佳答案
您已经typedef
list
成为Rep &
。这意味着 tmp
不是拷贝。这只是另一个引用。您对 tmp
所做的任何操作都会对 a_list
进行。
关于c++ - 即使我没有使用引用,值(value)也会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2578994/