c++為我們所提供的各種存取控制僅僅是在編譯階段給我們的限制,也就是說是編譯器確保了你在完成任務之前的正確行為,假如你的行為不正確,那么你休想構造出任何可執行程序來。但假如真正到了產生可執行代碼階段,無論是c,c++,還是pascal,大家都一樣,你認為c和c++編譯器產生的機器代碼會有所不同嗎,你認為c++產生的機器代碼會有訪問限制嗎?那么你錯了。什么const,PRivate,統統沒有(const變量或許會放入只讀數據段),它不會再給你任何的限制,你可以利用一切內存修改工具或者是自己寫一個程序對某一進程空間的某一變量進行修改,不管它在你的印象中是private,還是public,對于此時的你來說都一樣,想怎樣便怎樣。另外,你也不要為c++所提供的什么晚期捆綁等機制大呼神奇,它也僅僅是在所產生的代碼中多加了幾條而已,它遠沒有你想象的那么智能,所有的工作都是編譯器幫你完成,真正到了執行的時候,計算機會完全按照編譯器產生的代碼一絲不茍的執行。(以下的反匯編代碼均來自visial c++ 7.0) 一.讓我們從變量開始-----并非你想象的那么簡單變量是什么,變量就是一個在程序執行過程中可以改變的量。換一個角度,變量是一塊內存區域的名字,它就代表這塊內存區域,當我們對變量進行修改的時候,會引起內存區域中內容的改變。但是你若是學習過匯編或是計算機組成原理,那么你就會清楚對于一塊內存區域來說,根本就不存在什么名字,它所僅有的標志就是他的地址,因此我們若想修改一塊內存區域的內容,只有知道他的地址方能實現??磥硭^的變量一說只不過是編譯器給我們進行的一種抽象,讓我們不必去了解更多的細節,降低我們的思維跨度而已。例如下面這條語句: