我這個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