和力 吳麗賢
摘要:為了澄清C++中引用的本質(zhì),通過(guò)反匯編手段揭示了引用的底層實(shí)現(xiàn)機(jī)與指針實(shí)質(zhì)是一樣的,也是屬于間接訪(fǎng)問(wèn),并對(duì)實(shí)體名、指針和引用三種訪(fǎng)問(wèn)方式進(jìn)行了比較。
關(guān)鍵詞:C++;引用;底層實(shí)現(xiàn)機(jī)制;反匯編
中圖分類(lèi)號(hào):TP312文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)16-3854-02
Study and Analysis on Underlying Mechanism of Reference in C++
HE Li, WU Li-xian
(Department of Mathematics and Information Technology, Hanshan TeachersCollege, Chaozhou 521041, China)
Abstract: In order to clarify the Essence of reference in C++, the underlying mechanism of reference in C++ is revealed by means of disas sembling. References and pointers are indirect access. Entity name, pointer and references-three access methods are compared.
Key words: C++; reference; underlying mechanism; disassembling
C++語(yǔ)言中訪(fǎng)問(wèn)實(shí)體(包括變量和類(lèi)對(duì)象)可通過(guò)實(shí)體名(包括變量名和對(duì)象名)、指針和引用三種方式。通過(guò)學(xué)習(xí),學(xué)生一般能較好地理解前兩種訪(fǎng)問(wèn)方式,但由于很多文獻(xiàn)和教材只是簡(jiǎn)單地把引用看作是實(shí)體的別名,對(duì)于它的底層實(shí)現(xiàn)機(jī)制和工作原理介紹較為模糊,所以學(xué)生對(duì)于引用的本質(zhì),以及它與指針的異同大都顯得一知半解。下面以Visual C++為例,對(duì)于引用的底層實(shí)現(xiàn)機(jī)制進(jìn)行深入分析,以揭示引用的本質(zhì)。
在C++程序設(shè)計(jì)語(yǔ)言的教學(xué)過(guò)程中,很多師生對(duì)于引用的實(shí)現(xiàn)機(jī)制、它的本質(zhì),以及它與指針的區(qū)別與聯(lián)系感到困惑。該文通過(guò)反匯編手段揭示了引用的底層實(shí)現(xiàn)機(jī)與指針一樣的,也是屬于間接訪(fǎng)問(wèn),并通過(guò)實(shí)例驗(yàn)證了我們的分析。引用具有指針一樣的高效與便捷性,使用上又比指針安全、簡(jiǎn)潔。正是因?yàn)橐玫倪@些特點(diǎn),在隨后出現(xiàn)的Java和C#語(yǔ)言中引用已取代指針在CC++中原有的地位,而且它的功能也得到了進(jìn)一步的豐富。
[1]錢(qián)能. C++程序設(shè)計(jì)教程[M]. 2版.北京:清華大學(xué)出版社, 2005.
[2] Echel B, Allison C. Thinking in C++ (Second Edition), Volume 1: Introduction to Standard C++[M]. Upper Saddle River: Prentice Hall, 2000.
[3] Echel B, Allison C. Thinking in C++, Volume 2:Practical Programming[M]. Upper Saddle River: Prentice Hall, 2004.
[4]胡巧多.面向?qū)ο蟪绦蛟O(shè)計(jì)C++語(yǔ)言引用機(jī)制的剖析[J].長(zhǎng)春工程學(xué)院學(xué)報(bào), 2003,4(1):60-62.
[5]張鴻. C++面向?qū)ο蟪绦蛟O(shè)計(jì)中引用的使用[J].河南教育學(xué)院學(xué)報(bào), 2005,14(2):59-61.