我这个struct
定义:会发生什么成员
template<class T>
struct Node {
T value;
Node(const T& v) : value(v) {}
};
我想知道,当我做
int i = 3;
Node<int>* my_node = new Node<int>(i);
到底发生了什么打印出地址i
和地址my_node->value
我意识到他们不指向相同的地址。我的确希望这种行为,因为强制我的新指针被放置在特定的地址是没有意义的,以便能够包裹我的传递引用参数!
但我想知道&
有什么作用?只是为了确保参数在传递给方法时不被复制?如果是的话,那是为了避免重复复制?还是有另一个目的使用&
?
和value(v)
或value = v
只需将整个数据类型复制到新的存储空间中,无论v
是否通过引用传递,我是对吗?
编辑:我很抱歉,我试图缩短我的代码,并最终使其模糊。只是修复它。
首先,引用与地址无关。有时参考地址会产生与其所反对的对象相同的地址,有时候不会。但在你的例子中,你甚至错误地开始 - 你的'int值'不是一个引用,它是它自己的一个对象。 – SergeyA
请让你的变量名一致,我不能跟随这个问题。 –
@MarkRansom感谢您的注意。修正了它 – Yalda