Object Pascal:從物件指標談起 (轉)
Pascal:從指標談起:namespace prefix = o ns = "urn:schemas--com::office" />
作者: Musicwind®
建立時間: 2001-08-27
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
歷史:No.1
更新時間:2001-08-27 19:47
更新人員:Musicwind®
更新備註:建立。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. 物件指標無處不在
有人說指標是C語言的靈魂,但在Object Pascal中又何嘗不是如此呢!你看中最常見的“Form1: TForm1;”的宣告,還有“procedure TForm1.Button1Click(Sender: TObject);”這樣的語句,其中的Form1不正是一個物件指標麼?Sender,不也是的麼?在Object Pascal中,透過一個物件指標來訪問一個物件例項是最直接、最有效的方式。
2. 物件指標的
當你宣告一個TObject(或者TObject的派生類)型別的變數的時候,你便獲得了一個物件指標,但是那只是一個指標而已,除了給你四個位元組的儲存空間外,並沒有給你更多。並且,最初那四個位元組的值是不確定的,這意味著你不能認為它一定是一個nil或者別的什麼值。
3. 物件指標只有一種
物件指標無論怎麼千變萬化,都可以歸為一種,那就是TObject型別的物件指標。因為所有其它類,都是TObject派生,因此TObject型別的指標到處適用。比如這樣的程式碼:
var
Obj: TObject;
Form: TForm;
begin
//….
Obj := Form; //可以有這樣的程式碼,這裡的型別轉換是自動完成的。
…
end;
也許你會問,那麼反過來可不可以呢?當然可以,但是沒有那麼方便。比如:
begin
Fo:= TForm(Obj); // ß 這裡需要經過強制轉換
//…
end;
正如你所知道的,不同型別的變數是否可以互相轉換,取決於它們對於儲存空間的需求如何。正因為同是物件指標,對儲存空間的要求完全一致,所以強制轉換不成問題。
物件指標只有一種,似乎也可以總結為“天下指標皆一家”這句話。
4. 靈活運用
有沒有嘗試過這樣的程式碼呢?
var
i: Integer;
dw: D;
begin
I := Integer(Button1);
ShowMessage(TButton(I).Caption);
dw := DWORD(Button1);
ShowMessage(TButton(dw).ClassName);
end;
你會發現,原來Integer,DWORD也可以作為物件指標來使用。原因自然是因為它們的儲存空間與TObject型別的指標所要求的相同。
推而廣之,只要有四個位元組……(後面就不用我說了吧?),或者套用阿基米德的一句名言“只要給我四個位元組,我就可以……”。
Object Pascal的世界其實也很精彩,只要你肯發現!
/develop/my_article.?author=Musicwind">更多文章
[文終]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-990258/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 淺談Object Pascal的指標Object指標
- Object Pascal Style Guide (轉)ObjectGUIIDE
- 淺談指標 (轉)指標
- 函式指標淺談 (轉)函式指標
- 談談JavaScript中建立物件(Object)JavaScript物件Object
- 從 Java 到 Scala(一):物件導向談起Java物件
- 從幾個指標談windows記憶體指標Windows記憶體
- Object Pascal中String型別的內幕探討 (轉)Object型別
- Delphi的程式語言Object Pascal(1)Object
- 指標 (轉)指標
- 從影像融合談起
- 【C++系列】指標物件和物件指標的區別C++指標物件
- 指向const物件的指標 和 const指標物件指標
- 【原創】淺談指標(十三)指向陣列的指標指標陣列
- 從機器學習談起,深度好文機器學習
- 【原創】淺談指標(一)指標
- 【原創】淺談指標(二)指標
- 【原創】淺談指標(三)指標
- 【原創】淺談指標(四)指標
- 淺談Orabbix監控指標指標
- 神奇的“雙引號”——從一個誤建立物件錯誤談起物件
- 機器學習入門_從機器學習談起機器學習
- Object-C 指標 和 C 指標的相互轉換 與ARC 並驗證__bridge關鍵字的作用(轉)Object指標
- CR指標(轉載)指標
- 2.3C++物件模型和this指標C++物件模型指標
- ERP經驗談:規劃時如何定義指標(轉)指標
- 指標問題的一點體會(區別 [指向指標的指標] 與 [指標的指標] .) (轉)指標
- C++/Object Pascal中迴圈結構的一點差異及討論 (轉)C++Object
- 逆向思維——從“ERP失敗”談“企業ERP應用績效評價指標”(轉)指標
- 連續劇網路遊戲的經驗,從MAJESTIC談起(轉)遊戲
- C語言重點——指標篇(一文讓你完全搞懂指標)| 從記憶體理解指標 | 指標完全解析C語言指標記憶體
- 從JavaScript 的關鍵詞談起JavaScript
- Android 從SetContentView()談起AndroidView
- STL容器裡存放物件還是指標物件指標
- C++指標轉換C++指標
- 人氣指標(轉載)指標
- 隨機指標(轉載)隨機指標
- 我眼中的指標 (轉)指標