2015-10-02 80 views
1

我不是問指針和參考之間的區別。只是對引用和別名之間的區別感到困惑。在C++中是別名和引用相同的東西嗎?

就我而言,基準是數據類型別名就是描述這種數據類型的效用句話嗎?

謝謝!

+0

別名意味着只是另一個名稱存在的東西,如變量(引用),類型(typedef),某些使用從句等etc.etc – deviantfan

+0

我想你主要是得到它。引用是一種類型(具體而言,是一種*化合物*類型,即由另一種類型製成的類型)。 「別名」是指「引用價值的方式」的概念。引用類型的變量可以用於別名值。 –

+0

你應該更詳細地解釋你看到術語「別名」以及你認爲它的意思。這意味着幾件事情,因爲它只是一個通用的英語術語。這些「沒有任何背景的問題之間有什麼區別」是非常差的,很難正確回答。 –

回答

1

別名指通過不同名稱引用相同數據的任何方式。引用和指針是實現這種行爲的兩種方式。

1

類型別名聲明引入了一個名稱,該名稱可用作由type-id表示的類型的同義詞。 它沒有引入新的類型,也不能改變現有類型名稱的含義。類型別名聲明和typedef聲明之間沒有區別。該聲明可能出現在塊範圍,類範圍或命名空間範圍內。

http://en.cppreference.com/w/cpp/language/type_alias

2

否,參考的是不是一個數據類型,一個參考引用某些其他變量。使用引用與使用它引用的變量相同。它與指針非常相似(並且編譯器將引用視爲引擎下的指針不是不可能的)。

我從來沒有在C++的背景下聽說過「別名」,但有類型別名,由例如。 typedefusing。還有aliasing與引用和類型別名無關。

+0

因此,源代碼編譯爲機器碼後,所有的參考將被替換爲相同的內存地址的權利?參考對我來說更像是一個句法糖。 – coolgod

2

對不起,你說你是而不是問一個指針和一個引用的區別。

要回答你的問題,單詞參考意味着一個變量指向內存中的一個位置。 別名有幾個不同的含義,但在這種情況下我最常見到的一個含義是,多個變量引用內存中的相同位置,例如當您嘗試撥打memcpy(p, p, n);時。實現這一目標的一種方法是使用C++引用,這是一種語言特性與指針類似但不相同的術語。並非C++中的每個引用都必須指向具有其他名稱的東西。您還可以使用指針,地址運算符,引用調用或編譯器合併常量進行別名,以便兩個地方的「Hello」和「Hello」指向內存中的相同字節或聯合。可能不夠詳盡。

即使沒有任何其他變量同時引用相同的內存,如果人們想要調用某個「別名」的引用,我並不強烈地爭辯。

正如其他幾位人員指出的那樣,C++ 14使用術語「別名」來指代使用using聲明的模板類型。 (http://en.cppreference.com/w/cpp/language/type_alias

+0

未能在此處看到相關性。你能幫我嗎? –

+0

哦,對不起。你說你不是**問一個指針和一個引用的區別。 – Davislor

+0

完全重寫以解決實際問題。 – Davislor

相關問題